关于Toolbar的使用小结
来源:互联网 发布:mac windows 10驱动 编辑:程序博客网 时间:2024/05/17 23:50
本文将介绍简单打造一个通用的toolbar在项目中。
1.首先创建一个common_toolbar.xml的layout,可用于不同页面的引用。
<?xml version="1.0" encoding="utf-8"?><android.support.design.widget.AppBarLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" > <TextView android:id="@+id/toolbar_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:layout_gravity="center"/> </android.support.v7.widget.Toolbar></android.support.design.widget.AppBarLayout>
还有一个menu文件
<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/action_info" android:orderInCategory="100" android:title="@string/action_info" android:icon="@android:drawable/ic_dialog_info" app:showAsAction="ifRoom"/></menu>
2.在你的BaseActivity中添加如下代码
@Overridepublic void setContentView(int layoutResID) { super.setContentView(layoutResID); setAppBar();}private Toolbar mToolbar;private TextView mToolbarTitleTV;public void setAppBar() { mToolbar = (Toolbar) findViewById(R.id.toolbar); if (mToolbar != null) { mToolbar.setTitle(""); setSupportActionBar(mToolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); mToolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); mToolbarTitleTV = (TextView) mToolbar.findViewById(R.id.toolbar_title); }}protected void setToolbarTitle(String toolbarTitleStr) { if (mToolbarTitleTV != null) { mToolbarTitleTV.setText(toolbarTitleStr); }}@Overridepublic boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.common_action_menu, menu); return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.action_info) { onActionInfoClick(); return true; } return super.onOptionsItemSelected(item);}protected void onActionInfoClick() {}
3.在你需要toolbar的activity布局文件中引入common_toolbar.xml
<include layout="@layout/common_toolbar" />
4.让你的activity继承BaseActivity
如果想改变toolbar的title直接调用setToolbarTitle()方法即可。title已经默认居中显示。
toolbar左侧的导航按钮已经默认实现了关闭当前activity。
右边按钮的实现需要Override BaseAcitivity中的onActionInfoClick()方法
几个需要注意的地方:
1.toolbar的setTitle方法必须在 setSupportActionBar(mToolbar).之前调用
2.setDisplayHomeAsUpEnabled(true)是ActionBar的方法.用于显示左侧的返回按钮
3.toolbar的setNavigationOnClickListener()方法必须要在setSupportActionBar()之后调用才能生效.因为setSupportActionBar(Toolbar),会将Toolbar转换成Actionbar.点击事件也会重新设置.
阅读全文
0 0
- 关于Toolbar的使用小结
- 关于ToolBar+DrawerLayout的小结
- 关于ToolBar的使用总结
- Toolbar使用小结
- 关于toolbar的沉浸式使用
- 关于Toolbar使用时遇到的问题
- android中关于toolbar的使用
- 关于Toolbar的折腾(结合Fragment使用)
- 关于toolbar与menu配合使用遇到的问题
- 关于Bitmap的使用小结
- 关于使用BitMap的小结
- 关于Nginx的使用小结
- ToolBar控件的使用
- Toolbar的高级使用
- Android --Toolbar的使用
- ToolBar的使用
- android toolbar的使用
- ToolBar的使用
- 机器学习实践-k近邻算法-约会网站配对源码
- can't start git:usr/bin/git
- 通过函数给指针申请内存时遇到的内存泄漏问题
- js的slice,substring,substr,split用法
- 取double类型的几位有效数字
- 关于Toolbar的使用小结
- LeetCode231 Power of Two
- 【Leetcode】【python】First Missing Positive
- java.sql.SQLException: No suitable driver 的详细解决办法
- win8 win10 安装msi 提示2502、2503的错误代码
- 寻找丑数,把只包含因子2、3和5的数称作丑数(Ugly Number)
- 递归算法求N的阶乘
- 如何一步一步提高图像分类准确率?
- mysql根据不同的条件对数据进行批量修改(navicat)