Android v7包下Toolbar和ActionBarActivity实现后退导航效果

android.support.v7包下的ToolBar和ActionBarActivity,均自带后退导航按钮,只是要手动开启,让它显示出来。先来看看ToolBar,页面前台代码:
<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" />

如果要让后退按钮显示出来,需要在后台添加如下的代码

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

当然添加这行代码后仅仅是出现一个后退的箭头而已,点击后并没反应,需要继续添加监听事件才行,默认添加的按钮id是固定的,android.R.id.home,在onOptionsItemSelected中再添加如下的监听事件

     case android.R.id.home:
              finish();
              break;

其实这样并不是真正意义上的返回上一个页面,而是将这个页面销毁,从而显示上一个页面,也就是跳转之前的页面。

那么ActionBarActivity如何设置呢,看下面:

首先在要返回的页面A中设置该页面为要返回的页面

    setHomeButtonEnabled

然后在清单文件中设置页面B的parentActivityName为页面A即可,但是这个属性在API 16之后才可,之前的话要用meta-data才可

<meta-data android:name="android.support.PARENT_ACTIVITY"
                android:value=".MainActivity"></meta-data>

要在页面B中显示后退按钮,也要添加代码

        ActionBar actionBar=getSupportActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);    

这样在页面B的标题栏左上角就公显示一个后退箭头,点击后就会自动返回页面A,并不需要添加额外的监听事件。

总结:看起来ActionBarActivity自带的后退导航要比ToolBar的更方便,但是到目前为止,google已不建议使用ActionBarActivity,现在在AS中新建Activity继承的是AppCompatActivity,至于为什么我这个初学者并不知道,我也尝试实现ToolBar的自动后退效果,但是虽然ToolBar也有对应的setHomeButtonEnabled方法和setDisplayHomeAsUpEnabled,但是并不起作用,google后找到的都是说的要添加监听事件,并没有发现有说可以实现类似ActionBarActivity的效果,最后放弃。

时间: 2024-10-05 14:11:39

Android v7包下Toolbar和ActionBarActivity实现后退导航效果的相关文章

Android Theme主题继承(SDK下主题和v7包下主题)

主题样式在styles.xml文件里,一般有两种继承: 继承android主题 <style name="AppBaseTheme" parent="android:Theme.Holo"> 重写样式的话name中需要加上android:,可以看到parent父类引用就用到了parent="android:Theme.Holo" <item name="android:actionBarStyle">@

android v7包的关联

最近在使用到侧滑栏的时候,使用到了v7包下的actionbar,结果折腾了好久才折腾好,其实很简单的,操作步骤如下: 1. 在eclipse中导入v7包的工程 2. 在自己的工程中打开properties选项,添加v7的作为library,另外,一定不能选择is library 有人反应在选择添加library后,前面没有出现绿色的对勾,可能是v7支持包工程的问题,v7工程最好不放到桌面,放到非C盘的英文目录下 3. 将v7包下的两个jar(v4支持包和v7支持包)包,拷贝到自己的工程的libs

号外 ! 号外 ! V7包下的布局控件都此来参加同学会 , 快来看,快来看...

考虑到V7包实在大-–既庞大又强大 , 请所有与会的同学到门口来 我们先拍一张全家福: 1 . android.support.v7.widget.Toolbar 2 . android.support.v7.widget.CardView 3 . com.android.support:recyclerview-v7:xx 4 . com.android.support:design包.FloatingActionButton 5 . com.android.support:design包.T

Android V7包学习笔记更新中.....

关于V4 V7 V13 VX包介绍转自这里 1, Android Support V4, V7, V13是什么? 本质上就是三个java library. 2, 为什么要有support库? 如果在低版本Android平台上开发一个应用程序,而应用程序又想使用高版本才拥有的功能,就需要使用Support库. 3, 三个Support 库的区别和作用是什么? Android Support v4 是最早(2011年4月份)实现的库.用在Android1.6 (API lever 4)或者更高版本之

Android中使用ImageViewSwitcher实现图片切换轮播导航效果

前面写过了使用ViewFlipper和ViewPager实现屏幕中视图切换的效果(未实现轮播)附链接: Android中使用ViewFlipper实现屏幕切换 Android中使用ViewPager实现屏幕页面切换和页面切换效果 今天我们在换一种实现方式ImageViewSwitcher. ImageSwitcher是Android中控制图片展示效果的一个控件,如:幻灯片效果 ImageSwitcher粗略的理解就是ImageView的选择器. ImageSwitcher的原理:ImageSwi

[Android] BottomBar+ViewPager+Fragment实现炫酷的底部导航效果

BottomBar BottomBar是Github上的一个开源框架,因为从1.3.3开始不支持fragments了,要自己配置,弄了很久,不管是app的fragment还是V4 的程序总是总是闪退.于是就用这种方式实现了,效果还不错.github有详细说明,多余的就不说了. 这个roughike是这个项目的所有者(大神致敬). 我用的是android studio开发,fragment全部导的V4的包(以为最开始就支持的是v4的,后面也支持了app.fragment). 首先是dependen

模仿知乎Android APP,使用ToolBar+DrawerLayout+ViewPager

首先,需要使用ToolBar就需要有android.support.v7包,关于他的一些问题,大家可以看我之前的blog:关于V7的的一些问题和解决方法. 主要是需要下载到V7包,然后添加到他的class  path去,这样才可以支持ToolBar的一些style,然后还需要V7的JAR包,大家把他放在lib目录底下,build path就可以了. demo的大概框架: . 开始之前,我们了解一些关于ToolBar的一些知识,他是相当于ActionBar的第二代,在新的谷歌设计规范中提倡大家使用

Android常用UI之Toolbar

转载请注明出处:http://blog.csdn.net/h_zhang/article/details/51232773 Android3.0之后引入了ActionBar控件,但是由于ActionBar操作的诸多不便,并且官方也在一定程度上承认ActionBar限制了android app设计与开发的弹性.所以google官方建议使用Toolbar代替ActionBar,Toolbar比ActionBar使用起来更加灵活.而在material design中也对其做了名称的定义:app bar

【Android - V】之Toolbar的使用

Toolbar是Android V7包中的一个控件,用来代替Action Bar作为界面的头部标题栏布局.Toolbar相对于Action Bar的特点是更加灵活,可以显示在任何位置. 首先先来看Toolbar在布局文件中的代码怎么写,实际上跟其他Android原生控件一样,只需要设置宽高.背景等属性就可以了,如果有其他需求还可以设置theme等主题属性. 下面是一个Toolbar在布局文件中的代码: <RelativeLayout xmlns:android="http://schema