Android通用標題欄組合控件
作者:王露
由于項目中經(jīng)常用到此種組合控件,就封裝了下,具體效果看下圖,老司機可以繞道哈!
由于項目中經(jīng)常用到此種組合控件,就封裝了下,具體效果看下圖,老司機可以繞道哈!
一、主要功能
- 支持左右圖標動態(tài)設(shè)置
- 支持左右、中間文字動態(tài)修改
- 支持字體大小、顏色修改
- 支持左右圖標,左中右文字隱藏顯示
- 支持左右圖標和文案的點擊監(jiān)聽
二、基本使用方式
- <com.example.android.customvView.CustomNavigatorBar
- android:id="@+id/customView"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- app:leftImage="@drawable/leftarrow"
- app:rightImage="@drawable/rightarrow"
- app:leftImageVisiable="true"
- app:rightImageVisible="true"
- app:leftText="左邊"
- app:rightText="右邊"
- app:midText="標題"
- app:midTextFontColor="#ffffff"
- app:leftTextColor="#ffffff"
- app:rightTextColor="@color/colorAccent"
- app:titleBarBackground="@color/colorPrimary"
- app:midTextFontSize="18px"
- app:leftTextVisibale="true"
- app:rightTextVisible="true"
- app:leftTextFontSize="16px"
- app:rightTextFontSize="16px"
- />
三、基本屬性介紹
屬性名 | 屬性說明 | 屬性值 |
titleBarBackground | 標題欄背景色 | color,reference,默認為white |
leftImage | 左邊圖片 | reference |
leftImageVisiable | 左邊圖片是否可見 | boolean,默認為true,顯示控件 |
leftText | 左邊文案 | string,reference |
leftTextVisibale | 左邊文案是否可見 | boolean,默認為true,顯示控件 |
leftTextFontSize | 左邊文案字體大小 | dimension,reference,默認為16sp |
leftTextColor | 左邊文案字體顏色 | color,reference |
midText | 中間文案 | string,reference |
midTextVisiable | 中間文案是否可見 | boolean,默認為true,顯示控件 |
midTextFontSize | 中間文案字體大小 | dimension,reference,默認為18sp |
midTextFontColor | 中間文案字體顏色 | color,reference |
rightText | 右邊文案 | color,reference |
rightTextVisible | 右邊文案是否可見 | boolean,默認為true,顯示控件 |
rightTextFontSize | 右邊文案字體大小 | dimension,reference,默認為16sp |
rightTextColor | 右邊文案字體顏色 | color,reference |
rightImage | 右邊圖片 | reference |
rightImageVisible | 右邊圖片是否可見 | boolean,默認為true,顯示控件 |
四、組合控件類
五、attrs.xml
- <?xml version="1.0" encoding="utf-8" ?>
- <resources>
- <declare-styleable name = "CustomNavigatorBar">
- <attr name="titleBarBackground" format="reference|color" />
- <attr name="leftImage" format="reference" />
- <attr name="leftImageVisiable" format="boolean" />
- <attr name="leftText" format="string|reference" />
- <attr name="leftTextVisibale" format="boolean" />
- <attr name="leftTextFontSize" format="dimension|reference" />
- <attr name="leftTextColor" format="color|reference" />
- <attr name="midText" format="string|reference" />
- <attr name="midTextVisiable" format="boolean" />
- <attr name="midTextFontSize" format="dimension|reference" />
- <attr name="midTextFontColor" format="color|reference" />
- <attr name="rightText" format="string|reference" />
- <attr name="rightTextVisible" format="boolean" />
- <attr name="rightTextFontSize" format="dimension|reference" />
- <attr name="rightTextColor" format="color|reference" />
- <attr name="rightImage" format="reference" />
- <attr name="rightImageVisible" format="boolean" />
- </declare-styleable>
- </resources>
六、組合控件布局(custom_title_bar.xml)
為什么使用merge,因為組合控件已經(jīng)extends RelativeLayout,如果根布局還是用viewGroup的話,會使布局重復嵌套,影響View的繪制性能;
七、具體使用
- CustomNavigatorBar customNavigatorBar = (CustomNavigatorBar) findViewById(R.id.customView);
- /**
- * 第一種監(jiān)聽的具體實現(xiàn)
- */
- customNavigatorBar.setLeftImageOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- Toast.makeText(MainActivity.this,"left",Toast.LENGTH_SHORT).show();
- }
- });
- /**
- * 第二種監(jiān)聽的具體實現(xiàn)
- */
- customNavigatorBar.addViewClickListener(new CustomNavigatorBar.OnCustomClickListener() {
- @Override
- public void onClickListener(View rootView) {
- switch (rootView.getId()) {
- case R.id.right_image:
- Toast.makeText(MainActivity.this,"right_image is clicked",Toast.LENGTH_SHORT).show();
- break ;
- case R.id.left_image:
- Toast.makeText(MainActivity.this,"left_image is clicked",Toast.LENGTH_SHORT).show();
- break ;
- }
- }
- });
責任編輯:龐桂玉
來源:
安卓巴士Android開發(fā)者門戶