Android 封装标题栏
生活随笔
收集整理的這篇文章主要介紹了
Android 封装标题栏
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
寫在前面:
? ? ? ? ? ? 標題欄這個部分,絕大多數App都有,起到一個概括本頁面功能的作用,有些標題欄還具有返回上一頁等額外功能。
? ? ? ? ? ? 在這里不得不表揚一下蘋果的標題欄位設計,簡潔美觀實用,很有借鑒性
? ? ? ? ? ??
? ? ? ? ? ? 一、項目結構
? ? ? ? ? ??
? ? ? ? ? ?主要由一個布局文件activity_title.xml和一個構造類TitleBuilder.java組成,布局文件定義標題欄樣式,構造類負責設定文字內容,是否顯示返回按鈕等等。? ??
? ?
? ?二、代碼設計?? ?
? ? ? ? ? ?activity_title.xml 由一個絕對布局包裹兩個圖片控件和一個文本框控件組成
? ? ? ? ? ?此處使用線性布局嵌套絕對布局,使內容可以更好地居中顯示
<pre name="code" class="html"><?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:background="#1B77A8"android:gravity="center_vertical"android:layout_width="match_parent"android:layout_height="50dp"><RelativeLayoutandroid:id="@+id/title_bar"android:paddingLeft="5dp"android:paddingRight="5dp"android:layout_width="match_parent"android:layout_height="wrap_content"><ImageViewandroid:layout_centerVertical="true"android:visibility="gone"android:id="@+id/title_leftIco"android:layout_width="wrap_content"android:layout_height="wrap_content" /><TextViewandroid:id="@+id/title_text"android:textSize="20sp"android:textColor="#ffffff"android:layout_centerInParent="true"android:layout_width="wrap_content"android:layout_height="wrap_content" /><ImageViewandroid:visibility="gone"android:id="@+id/title_rightIco"android:layout_alignParentRight="true"android:layout_width="wrap_content"android:layout_height="wrap_content" /></RelativeLayout> </LinearLayout> TitleBuilder.java?/*** Created by PanZhe on 2016/7/22.*/ public class TitleBuilder {private View titleView;private RelativeLayout titleBar;private TextView text;private ImageView leftIco;private ImageView rightIco;/*** 構造方法:用于獲取對象* */public TitleBuilder(Activity context){titleView = context.findViewById(R.id.title_bar);text = (TextView)titleView.findViewById(R.id.title_text);titleBar = (RelativeLayout)titleView.findViewById(R.id.title_bar);leftIco = (ImageView)titleView.findViewById(R.id.title_leftIco);rightIco = (ImageView)titleView.findViewById(R.id.title_rightIco);}/*** 用于設置標題欄文字* */public TitleBuilder setTitleText(String titleText){if(!TextUtils.isEmpty(titleText)){text.setText(titleText);}return this;}/*** 用于設置標題欄左邊要顯示的圖片* */public TitleBuilder setLeftIco(int resId){leftIco.setVisibility(resId > 0 ? View.VISIBLE : View.GONE);leftIco.setImageResource(resId);return this;}/*** 用于設置標題欄右邊要顯示的圖片* */public TitleBuilder setRightIco(int resId){rightIco.setVisibility(resId > 0 ? View.VISIBLE : View.GONE);rightIco.setImageResource(resId);return this;}/*** 用于設置標題欄左邊圖片的單擊事件* */public TitleBuilder setLeftIcoListening(View.OnClickListener listener){if(leftIco.getVisibility() == View.VISIBLE){leftIco.setOnClickListener(listener);}return this;}/*** 用于設置標題欄右邊圖片的單擊事件* */public TitleBuilder setRightIcoListening(View.OnClickListener listener){if(rightIco.getVisibility() == View.VISIBLE){rightIco.setOnClickListener(listener);}return this;} } ? ? 三、使用方法
? ?在需要的地方引入
<include layout="@layout/activity_title"/>? ? ?在java代碼中使用new方法循環設置參數public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);new TitleBuilder(this).setTitleText("測試標題").setLeftIco(R.drawable.left).setLeftIcoListening(leftReturnListener);}private View.OnClickListener leftReturnListener = new View.OnClickListener() {@Overridepublic void onClick(View view) {finish();}}; } ? ?
? ?四、效果圖
中規中矩,對不對?
大家可以通過修改TitleBuild構造類中的方法來實現自己滿意的效果,在這里就不一一列舉了
??
總結
以上是生活随笔為你收集整理的Android 封装标题栏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL(InnoDB剖析):08--
- 下一篇: Android打造通用标题栏——让你的A