BaseActivity封装固定控件
来源:互联网 发布:斑马条码打印机软件 编辑:程序博客网 时间:2024/05/29 03:22
最近公司项目调接口,业务比较忙没有时间写东西了,今天新给了一个需求要求在没一个activity中都要有一个floatingactionButton。我就改了之前写的BaseActivity,下面基本说一下我的思路。
1,如何在baseActivity中固定一个控件呢?
因为我们的控件必须依赖于一个继承自viewGroup的布局存在。所以一开始我的想法是在BaseAcitivity中获取到子activity的布局,然后new出控件加进去,但是事实正面这样是行不同的。
/** * 创建fab */ private void setFabm(ViewGroup viewGroup) { final FloatingActionButton programFab1 = new FloatingActionButton(mContext); programFab1.setButtonSize(FloatingActionButton.SIZE_MINI); programFab1.setLabelText("fab"); programFab1.setImageResource(R.mipmap.ic_edit); contentview.addView(programFab1) programFab1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { programFab1.setLabelColors(ContextCompat.getColor(mContext, R.color.grey), ContextCompat.getColor(mContext, R.color.light_grey), ContextCompat.getColor(mContext, R.color.white_transparent)); programFab1.setLabelTextColor(ContextCompat.getColor(mContext, R.color.black)); } }); }会在addview的时候报空指针,是因为contentview没有获取到。
真正正确的做法:
新建一个baseActivity的布局加入需要固定的控件,重写setcontentView
@Override public void setContentView(@LayoutRes int layoutResID) { if ( R.layout.base == layoutResID) { super.setContentView(R.layout.base); contentView = (LinearLayout) findViewById(R.id.layout_center); contentView.removeAllViews(); } else if (layoutResID != R.layout.base) { View addView = LayoutInflater.from(this).inflate(layoutResID, null); contentView.addView(addView); } }当传过来的布局文件是我们的base的时候,我们才去实际的设置布局文件
super.setContentView(R.layout.activity_base);,同时获取里面的一个容器ContentView,在我们的子类调用这个方法的时候,我们就通过LayoutInflater去找到这个view,然后加到我们的base里面去,通过这种方式,我们拐弯的达到了继承BaseLayout的效果。
之后我们就可以把一些基础的各种设置ActionBar的工作从各个Activity里面抽出来,放到这个BaseActivity里面去。
ok 大功告成!!!
阅读全文
0 0
- BaseActivity封装固定控件
- BaseActivity封装
- BaseActivity封装
- BaseActivity封装
- 封装BaseActivity
- BaseActivity基本封装
- baseactivity实现封装toolbar
- BaseActivity的简单封装
- BaseActivity基类封装
- BaseActivity和BaseFragment封装
- Android 基于BaseActivity封装
- Android BaseActivity App框架设计BaseActivity封装
- BaseActivity与BaseFragment的封装
- BaseActivity与BaseFragment的封装
- Android 基类BaseActivity的封装
- BaseActivity和BaseFragment 的封装
- 抽象类BaseActivity的封装
- Android 基类BaseActivity的封装
- 值类型和引用类型
- 使用hexo+github搭建个人微博——手把手教
- 【java面试】数据库篇
- 高并发的事务管理注意事项
- ubuntu 16.04 xampp环境配置虚拟主机
- BaseActivity封装固定控件
- Influxdb的cli中查询结果time列格式显示设置
- 有限状态机FSM详解及其实现
- IntelliJ IDEA 快捷键说明大全(中英对照、带图示详解)
- mybatis-参数处理-11
- swift速学-基础部分一
- qDebug重定向
- $router实现promise效果
- AM335X ADC 模数转换驱动及公式