在Android项目开发中我们常常会用到自定义的标题栏,可是Android系统中自带的ActionBar太难看了,因此我们通常会自己写一个控件来实现TitelBar的功能,接下来让我来说说如何实现这一个过程吧,直接上代码:
public class TitleBar extends LinearLayout {private TextView titleName;private TextView right;private ImageButton back;Context context;public TitleBar(Context context) {super(context);this.context = context;init();}public TitleBar(Context context, AttributeSet attrs) {// 一些控件你不调用的话默认为view.gone;super(context, attrs);this.context = context;init();}
首先TitleBar继承于Linearlayout,在构造函数中初始化各个控件,如下所示:
private void init() {LayoutInflater.from(context).inflate(R.layout.titlebar, this);back = (ImageButton) findViewById(R.id.back);right = (TextView) findViewById(R.id.right);titleName = (TextView) findViewById(R.id.title);}
在上面我们直接写一个layout布局,自己把各个控件摆放好,layout布局如下:
接下来我们为各个控件实现设置标题,图片以及点击事件的功能,如下
public void setTitle(String name, Object right) {setTitleName(name);setRightText(right);}// 设置titleBar名字public void setTitleName(String Name) {titleName.setVisibility(View.VISIBLE);titleName.setText(Name);}public String getTitleName() {if (titleName != null)return titleName.getText().toString();return null;}public View getRightView() {return right;}// 设置右边按钮图标public void setRightText(Object rightSrc) {if (rightSrc != null) {if (rightSrc instanceof String) {String text = (String) rightSrc;right.setText(text);} else if (rightSrc instanceof Integer) {right.setText("");int img = (Integer) rightSrc;Drawable a = getResources().getDrawable(img);int size = CommonUtils.dip2px(context, 18);a.setBounds(0, 0, size, size);right.setCompoundDrawables(a, null, null, null);}}}
相信这些代码逻辑大家都能看得懂,都是根据我们所需的界面要求进行设置显示,接下重点讲一下如何为自定义控件添加点击事件呢?由于点击事件是由外界触发的,所以里面的逻辑实现肯定不能写在这个TtileBar的类里面,因此我们需要提供一个接口供给外界使用,这就用到了接口回调机制。首先定义一个接口BtnListener里面有一个方法onclick()如下:
public interface BtnListener {public abstract void click();}
然后就可以给左边或右边按钮添加点击事件了:
// 设置左边按钮监听public void setLeftBtnListener(final BtnListener listener) {if (back.getVisibility() != View.INVISIBLE) {back.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {listener.click();}});}}// 设置右边按钮监听public void setRightBtnListener(final BtnListener listener) {right.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {listener.click();}});}
然后我们就可以在界面MainActivity中这样实现了
titleBar = (TitleBar) findViewById(R.id.titleBar);//设置标题titleBar.setTitleName("空调维护");//点击左边返回上一个界面titleBar.setLeftBtnListener(new BtnListener() {@Overridepublic void click() {finish();}});
具体界面效果如下:

更多相关文章

  1. Android(安卓)Studio --“Cannot resolve symbol” 解决办法
  2. 【Android进阶学习】设置透明效果的三种方法
  3. Android实现再图标右上角显示数字
  4. android ViewPager 实现点击小圆点切换页面 案例
  5. Android仿淘宝添加商品时属性规格popupwindow
  6. android 设置为壁纸代码
  7. Android(安卓)Gallery 的简单使用
  8. Android(安卓)api28 tablayout改变
  9. 设置布局默认为LinearLayout,却成了RelativeLayout

随机推荐

  1. Android(安卓)Flutter 混合开发高仿大厂A
  2. Android中资源文件的使用
  3. 谷歌Android手机应用开发环境的搭建
  4. Android(安卓)开发新方向 Android(安卓)W
  5. android串口通信——身份证识别器
  6. Android初识之简易计算器
  7. Android(安卓)设备上实现串口的移植
  8. Android文件存储
  9. 浅入浅出 Android(安卓)安全 (二) Android(
  10. 基于AOA协议的android USB通信