Android通用标题栏组合控件

简介:

由于项目中经常用到此种组合控件,就封装了下,具体效果看下图,老司机可以绕道哈!  

一、主要功能

  • 支持左右图标动态设置
  • 支持左右、中间文字动态修改
  • 支持字体大小、颜色修改
  • 支持左右图标,左中右文字隐藏显示
  • 支持左右图标和文案的点击监听

二、基本使用方式


  
  
  1. <com.example.android.customvView.CustomNavigatorBar 
  2.  
  3.         android:id="@+id/customView" 
  4.  
  5.         android:layout_width="match_parent" 
  6.  
  7.         android:layout_height="wrap_content" 
  8.  
  9.         app:leftImage="@drawable/leftarrow" 
  10.  
  11.         app:rightImage="@drawable/rightarrow" 
  12.  
  13.         app:leftImageVisiable="true" 
  14.  
  15.         app:rightImageVisible="true" 
  16.  
  17.         app:leftText="左边" 
  18.  
  19.         app:rightText="右边" 
  20.  
  21.         app:midText="标题" 
  22.  
  23.         app:midTextFontColor="#ffffff" 
  24.  
  25.         app:leftTextColor="#ffffff" 
  26.  
  27.         app:rightTextColor="@color/colorAccent" 
  28.  
  29.         app:titleBarBackground="@color/colorPrimary" 
  30.  
  31.         app:midTextFontSize="18px" 
  32.  
  33.         app:leftTextVisibale="true" 
  34.  
  35.         app:rightTextVisible="true" 
  36.  
  37.         app:leftTextFontSize="16px" 
  38.  
  39.         app:rightTextFontSize="16px" 
  40.  
  41.         />  

三、基本属性介绍

属性名 属性说明 属性值
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


  
  
  1. <?xml version="1.0" encoding="utf-8" ?> 
  2.  
  3. <resources> 
  4.  
  5.     <declare-styleable name = "CustomNavigatorBar"
  6.  
  7.         <attr name="titleBarBackground" format="reference|color" /> 
  8.  
  9.         <attr name="leftImage" format="reference" /> 
  10.  
  11.         <attr name="leftImageVisiable" format="boolean" /> 
  12.  
  13.         <attr name="leftText" format="string|reference" /> 
  14.  
  15.         <attr name="leftTextVisibale" format="boolean" /> 
  16.  
  17.         <attr name="leftTextFontSize" format="dimension|reference" /> 
  18.  
  19.         <attr name="leftTextColor" format="color|reference" /> 
  20.  
  21.         <attr name="midText" format="string|reference" /> 
  22.  
  23.         <attr name="midTextVisiable" format="boolean" /> 
  24.  
  25.         <attr name="midTextFontSize" format="dimension|reference" /> 
  26.  
  27.         <attr name="midTextFontColor" format="color|reference" /> 
  28.  
  29.         <attr name="rightText" format="string|reference" /> 
  30.  
  31.         <attr name="rightTextVisible" format="boolean" /> 
  32.  
  33.         <attr name="rightTextFontSize" format="dimension|reference" /> 
  34.  
  35.         <attr name="rightTextColor" format="color|reference" /> 
  36.  
  37.         <attr name="rightImage" format="reference" /> 
  38.  
  39.         <attr name="rightImageVisible" format="boolean" /> 
  40.  
  41.     </declare-styleable> 
  42.  
  43. </resources>  

六、组合控件布局(custom_title_bar.xml)

为什么使用merge,因为组合控件已经extends RelativeLayout,如果根布局还是用viewGroup的话,会使布局重复嵌套,影响View的绘制性能;

七、具体使用


  
  
  1.  CustomNavigatorBar customNavigatorBar = (CustomNavigatorBar) findViewById(R.id.customView); 
  2.         /** 
  3.  
  4.          * 第一种监听的具体实现 
  5.  
  6.          */ 
  7.  
  8.         customNavigatorBar.setLeftImageOnClickListener(new View.OnClickListener() { 
  9.  
  10.             @Override 
  11.  
  12.             public void onClick(View view) { 
  13.  
  14.                 Toast.makeText(MainActivity.this,"left",Toast.LENGTH_SHORT).show(); 
  15.  
  16.             } 
  17.  
  18.         }); 
  19.  
  20.  
  21.         /** 
  22.  
  23.          * 第二种监听的具体实现 
  24.  
  25.          */ 
  26.  
  27.         customNavigatorBar.addViewClickListener(new CustomNavigatorBar.OnCustomClickListener() { 
  28.  
  29.             @Override 
  30.  
  31.             public void onClickListener(View rootView) { 
  32.  
  33.                 switch (rootView.getId()) { 
  34.  
  35.                     case R.id.right_image: 
  36.  
  37.                         Toast.makeText(MainActivity.this,"right_image is clicked",Toast.LENGTH_SHORT).show(); 
  38.  
  39.                         break ; 
  40.  
  41.                     case R.id.left_image: 
  42.  
  43.                         Toast.makeText(MainActivity.this,"left_image is clicked",Toast.LENGTH_SHORT).show(); 
  44.  
  45.                         break ; 
  46.  
  47.                 } 
  48.  
  49.             } 
  50.  
  51.         });  





作者:王露
来源:51CTO
目录
相关文章
|
2月前
|
XML 存储 Java
浅谈Android的TextView控件
浅谈Android的TextView控件
47 0
|
3月前
|
XML 编解码 Android开发
安卓开发中的自定义视图控件
【9月更文挑战第14天】在安卓开发中,自定义视图控件是一种高级技巧,它可以让开发者根据项目需求创建出独特的用户界面元素。本文将通过一个简单示例,引导你了解如何在安卓项目中实现自定义视图控件,包括创建自定义控件类、处理绘制逻辑以及响应用户交互。无论你是初学者还是有经验的开发者,这篇文章都会为你提供有价值的见解和技巧。
59 3
|
4月前
|
前端开发 Android开发 开发者
安卓开发中的自定义视图:构建你的第一个控件
【8月更文挑战第26天】在安卓开发的浩瀚海洋中,自定义视图是一块充满魔力的乐土。它不仅是开发者展示创造力的舞台,更是实现独特用户体验的关键。本文将带你步入自定义视图的世界,从基础概念到实战应用,一步步教你如何打造自己的第一个控件。无论你是初学者还是有经验的开发者,这篇文章都将为你的开发之旅增添新的风景。
|
6月前
|
XML IDE 开发工具
【Android UI】自定义带按钮的标题栏
【Android UI】自定义带按钮的标题栏
70 7
【Android UI】自定义带按钮的标题栏
|
6月前
|
Java Android开发
18. 【Android教程】图片控件 ImageView
18. 【Android教程】图片控件 ImageView
109 4
|
6月前
|
前端开发 API Android开发
25. 【Android教程】列表控件 ListView
25. 【Android教程】列表控件 ListView
236 2
|
6月前
|
Java Android开发 开发者
17. 【Android教程】开关控件ToggleButton/Switch
17. 【Android教程】开关控件ToggleButton/Switch
84 2
|
5月前
|
XML 数据格式
Android-自定义三角形评分控件
Android-自定义三角形评分控件
49 0
|
6月前
|
XML Android开发 数据格式
Android基础控件介绍
Android基础控件介绍
|
6月前
|
Android开发
Android 自定义View 测量控件宽高、自定义viewgroup测量
Android 自定义View 测量控件宽高、自定义viewgroup测量
143 0