使ActionBar(Toolbar)的Up导航和实体按键Back实现同步
来源:互联网 发布:mac下载软件存在那 编辑:程序博客网 时间:2024/05/03 08:28
前言
android的toolbar的返回键有必要存在吗?
google自家应用也保留了toolbar的返回键。 觉得和下方的实体返回键重了。
不管什么原因大众的使用习惯就是这样,
所以呢在开发过程中就会有了toolbar的返回和实体返回键都要实现的问题
而且要基本功能相同,这就有了功能同步的问题。
官方中把Toolbar中的那个返回键不叫做返回键 ,而叫做Up功能是返回该app的逻辑层级的上一层,即
parentActivity
。
详细见Navigation with Back and Up返回back stack的上一个activity。
实现
要想ActionBar或者toolbar显示出home来需要调用如下代码
//在onCreate()内部,通过setSupportActionBar()向Activity传递布局内Toolbar的引用setSupportActionBar(toolbar);//这里提示可能会报出异常具体见下图getSupportActionBar().setHomeButtonEnabled(true);//设置toolbar后调用setDisplayHomeAsUpEnabledgetSupportActionBar().setDisplayHomeAsUpEnabled(true);
setHomeButtonEnabled
这个小于4.0版本的默认值为true的。但是在4.0及其以上是false,
该方法的作用:决定左上角的图标是否可以点击。没有向左的小图标。 true 图标可以点击 false 不可以点击。- setDisplayHomeAsUpEnabled(true)
给左上角图标的左边加上一个返回的图标 。对应ActionBar.DISPLAY_HOME_AS_UP
- setDisplayShowHomeEnabled(true)
使左上角图标是否显示,如果设成false,则没有程序图标,仅仅就个标题,否则,显示应用程序图标,对应id为android.R.id.home
,对应ActionBar.DISPLAY_SHOW_HOME
- setDisplayShowCustomEnabled(true)
使自定义的普通View能在title栏显示,即actionBar.setCustomView
能起作用,对应ActionBar.DISPLAY_SHOW_CUSTOM
- setDisplayShowTitleEnabled(true)
对应ActionBar.DISPLAY_SHOW_TITLE
其中
setHomeButtonEnabled
和setDisplayShowHomeEnabled
共同起作用,如果setHomeButtonEnabled
设成false
,即使setDisplayShowHomeEnabled
设成true
,图标也不能点击
接着配置AndroidManifest.xml
在Android 4.1上,只需要声明该activity的parentActivity
即可。
在Android 4.0及之前的版本上,需要include Support Library,然后添加相应的<meta-data>
。
<application ... > ... <!-- The main/home activity (it has no parent activity) --> <activity android:name="com.example.MainActivity" ...> ... </activity> <!-- A child of the main activity --> <activity android:name="com.example.ActivityB" android:parentActivityName="com.example.MainActivity" > <!-- Parent activity meta-data to support 4.0 and lower --> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.MainActivity" /> </activity> </application>
接下来在代码中直接使用如下的的方法就可以了
- ActionBar的Up 这段在配置文件中配置了可以不用
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { // Respond to the action bar's Up/Home button case android.R.id.home: NavUtils.navigateUpFromSameTask(this); return true; } return super.onOptionsItemSelected(item); }
- 返回键调用的
@Override public void onBackPressed() { NavUtils.navigateUpFromSameTask(this); super.onBackPressed(); }
参考资料
- NavUtils.navigateUpFromSameTask(this)
- Which one to use NavUtils.navigateUpFromSameTask() vs. onBackPressed()
Toolbar设置标题的问题
在使用Toolbar时,如果需要修改标题必须在onCreate()方法执行完成之后修改。因为在onCreate()方法中设置任何标题值都会被重置为AndroidManifest
中android:lable
的值。为了抵消这种行为,我们可以在onCreate()执行之后执行的onPostCreate()方法中执行修改标题的。
/** * Called when activity start-up is complete (after onStart() and onRestoreInstanceState(Bundle) have been called). * * @param savedInstanceState */ @Override public void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); //Toolbar 必须在onCreate()之后设置标题文本,否则默认标签将覆盖我们的设置 if (toolbar != null) { toolbar.setTitle("零钱"); toolbar.setSubtitle("微信安全支付"); } }
- 使ActionBar(Toolbar)的Up导航和实体按键Back实现同步
- 标题栏的实现ActionBar和toolBar
- 一探ActionBar和ToolBar的区别
- ActionBar、TitleBar、ToolBar的联系和区别
- 关于Toolbar和ActionBar的一些坑
- ActionBar实现导航(代码添加导航)
- ActionBar和Toolbar
- ActionBar 和 Toolbar详解
- Android Support V7 包中 ActionBar的使用 (3) 为ActionBar添加Up导航功能
- Android导航中向上和返回(Back)的区别
- 在ActionBar上实现返回键和Toolbar共存
- ActionBar的向上导航和返回键
- Notification和Actionbar的返回导航
- ActionBar实现Tab导航
- ActionBar详解和toolbar详解
- ToolBar和ActionBar右边三个点的图标替换
- ActionBar和ToolBar显示返回箭头的方法
- 关于ToolBar和Actionbar左上角返回箭头的问题
- const 成员函数重载
- 用J-Link烧写bootloader到Mini2440的Nor Flash
- Memcached Notes
- [整/]Random Walks for Image Segmentation
- 云智巡能否提高运营决策能力?
- 使ActionBar(Toolbar)的Up导航和实体按键Back实现同步
- springmvc 生成验证码
- MySql排序排名
- 网易视频云技术专家分析:你可能不知道的MYSQL“隐藏”参数
- Android Volley框架及其get,post方式的使用
- Java多线程基础:进程和线程之由来
- 性能优化模式
- 好好努力写博客
- Android6.0运行时权限的处理及解决办法