博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 自定义ToolBar详细使用
阅读量:4697 次
发布时间:2019-06-09

本文共 5107 字,大约阅读时间需要 17 分钟。

自定义xml设置ToolBar,通过menu文件扩展选项,通过继承baseactivity使用

1.ToolBar布局

2.menu文件(title右侧图标,测试发现最多只能显示三个,如果超过三个第三个会变成更多的选项),另一种方式就是像上边那样在xml布局里写在Toolbar标签里

3.BaseActivity

/** * Created by Administrator on 2016/9/5 0005. */public class BaseActivity extends AppCompatActivity implements View.OnClickListener, Toolbar.OnMenuItemClickListener {    /*Toolbar*/    private Toolbar toolBar;    /**/    private CoordinatorLayout coordinatorLayout;    /*是否第一次加载图标(主要针对首页一对多fragment)*/    private boolean title_menu_first = true;    /*是否第一次加载返回*/    private boolean title_back_first = true;    /*是否是返回(有可能是代表别的功能)*/    private boolean is_title_back = true;    /*返回*/    private ImageView titleBack;    /*标题名称*/    private TextView titleName;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //竖屏        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);        setRootView();//        coordinatorLayout = getView(R.id.coordinatorLayout);        initToolbar();        initWidght();    }    protected void setRootView(){}    protected void initWidght(){};    //    protected 
T getView(int resourcesId){ return (T) findViewById(resourcesId); }/*初始化toolbar*/ private void initToolbar(){ toolBar = getView(R.id.toolbar); toolBar.setTitle(""); toolBar.setTitleTextColor(Color.WHITE); titleName = getView(R.id.title_name);// setSupportActionBar(toolBar); } /** * 设置返回 * @param back :是否返回:是-->返回,不是则设置其他图标 * @param resourcesId :图标id,返回时随意设置,不使用 * */ protected void setTitleBack(final boolean back,int resourcesId){ is_title_back = back; if (title_back_first || titleBack == null){ titleBack= getView(R.id.title_back); titleBack.setOnClickListener(this); title_back_first = false; } titleBack.setVisibility(View.VISIBLE); if (!back){ titleBack.setImageResource(resourcesId); } } /** * 设置title * @param title :title * */ protected void setTitleName(String title){ titleName.setText(title); } /** * title右侧:图标类 * */ protected void setRightRes(){ //扩展menu toolBar.inflateMenu(R.menu.base_toolbar_menu); //添加监听 toolBar.setOnMenuItemClickListener(this); } /** * 显示title图标 * @param itemId :itemId :图标对应的选项id(1个到3个),最多显示3两个 * */ protected void showTitleRes(int... itemId){ if (title_menu_first){ setRightRes(); title_menu_first = false; } for (int item:itemId){ //显示 toolBar.getMenu().findItem(item).setVisible(true);//通过id查找,也可以用setIcon()设置图标// toolBar.getMenu().getItem(0).setVisible(true);//通过位置查找 } } /** * 隐藏title图标 * @param itemId :图标对应的选项id * */ protected void goneTitleRes(int... itemId){ if (titleBack != null) titleBack.setVisibility(View.GONE); for (int item:itemId){ //隐藏 toolBar.getMenu().findItem(item).setVisible(false); } } /** * title右侧文字 * @param str :文字内容 * */ protected void setTitleRightText(String str){ TextView textView = getView(R.id.title_rightTv); textView.setVisibility(View.VISIBLE); textView.setText(str); textView.setOnClickListener(this); } @Override public void onClick(View v) { if (v.getId() == R.id.title_back && is_title_back){ onBackPressed(); } } //toolbar菜单监听 @Override public boolean onMenuItemClick(MenuItem item) { return false; }}

 

3.Activity使用

 

public class MainActivity extends BaseActivity{    @Override    protected void setRootView() {        super.setRootView();        setContentView(R.layout.activity_main);    }    @Override    protected void initWidght() {        super.initWidght();       setTitleName(getResources().getString(R.string.chat));//title//                  setTitleBack(false,R.mipmap.ic_search);//有图标,但不是返回                    //setTitleBack(true,0);//返回//                  setTitleRightText("保存");//右侧文字                    showTitleRes(R.id.title_add,R.id.title.setting);//扩展menu(图标)                    //goneTitleRes(R.id.title_add);隐藏图标,一般用不到    }    @Override    public void onClick(View v) {        if (v.getId() == R.id.title_back){            workFragment.titleSearch();        }    }    @Override    public boolean onMenuItemClick(MenuItem item) {        switch (item.getItemId()){            case R.id.title_add://添加                break;            case R.id.title_apps://应用break;            case R.id.title_setting://设置                break;        }        return super.onMenuItemClick(item);    }}

 

 Toolbar其他设置

1.去掉左边空白,在style文件里设置

    

 

转载于:https://www.cnblogs.com/Jieth/p/5844469.html

你可能感兴趣的文章
sqlplus terminators - Semicolumn (;), slash (/) and a blank line
查看>>
省选知识清单/计划列表(咕?)
查看>>
远程桌面(3389)复制(拖动)文件
查看>>
转 lucene3搜索引擎,索引建立搜索排序分页高亮显示, IKAnalyzer分词
查看>>
win10应用UserControl
查看>>
BZOJ4516: [Sdoi2016]生成魔咒(后缀自动机)
查看>>
查看手机已经记住的WIFI密码
查看>>
最新版IntelliJ IDEA2019 破解教程(2019.08.07-情人节更新)
查看>>
我是怎么用缠论在商品里边抢钱之二 (2019-07-12 15:10:10)
查看>>
python入门之正则表达式
查看>>
SAS学习经验总结分享:篇五-过程步的应用
查看>>
Android创建文件夹及文件并写入数据
查看>>
file的getPath getAbsolutePath和getCanonicalPath的不同
查看>>
课时4—切入切出动画
查看>>
eclipse 编辑 python 中文乱码的解决方案
查看>>
Python 爬虫的集中简单方式
查看>>
数据库MySQL/mariadb知识点——触发器
查看>>
Ubuntu做Tomcat服务:insserv: warning: script 'tomcat' missing LSB tags and overrides
查看>>
Binary Agents
查看>>
入门Webpack,看这篇就够了
查看>>