展会信息港展会大全

Appcompat实现Action Bar的兼容性处理
来源:互联网   发布日期:2015-09-29 10:49:44   浏览:1900次  

导读:Appcompat实现Action Bar时,如果使用到split action bar或者Navigating Up with the App Icon需要考虑兼容性。下面介绍下split ...

Appcompat实现Action Bar时,如果使用到split action bar或者Navigating Up with the App Icon需要考虑兼容性。下面介绍下split action bar和Navigating Up with the App Icon,并解决兼容性。

split action bar

启用split action bar模式时,在屏幕的底部会显示一个独立的横条,用于显示Activity在窄屏设备(如竖屏手机)上运行时的所有操作项,效果如下图。

要使用这种风格也非常简单,Android4.0(API 级别 14)或以上的版本上 , 在manifest文件中的activitiy节点或application节点中添加 uiOptions=“splitActionBarWhenNarrow”属性。API 级别小于 14 , 除了要添加以上属性以外,还需要在activity节点中添加如下节点:

<meta-dataandroid:name="android.support.UI_OPTIONS"android:value="splitActionBarWhenNarrow">

示例代码如下:

[html]

<manifest ...>

<activity uiOptions="splitActionBarWhenNarrow" ... >

<meta-data android:name="android.support.UI_OPTIONS"

android:value="splitActionBarWhenNarrow" />

</activity>

</manifest>

如果想实现上图最右侧的效果,即不显示标题栏和图标,可以在代码中使用如下方法:

[java]

setDisplayShowHomeEnabled(false);

setDisplayShowTitleEnabled(false);

Navigating Up with the App Icon

Navigating Up with the App Icon作为传统的回退导航(一般指回退键,把用户带回任务历史中的前一个窗口)的补充,你能够让action bar图标提供向上级页面导航的功能,它应用把用户带回到你的应用程序的上级页面。例如,当前页面时你的应用程序层次比较深的一个页面,触摸应用程序图标应该返回返回上一级页面(当前页面的父页面)。

1)应用场景

在界面A中有一个List,点击其中的一个item以后,进入到界面B,这时界面B就可以添加上图所示的Up导航功能。

2)、与按下回退键的区别

回退键是严格按照用户点击的时间顺序,来进行后退显示之前的屏幕,而Navigating Up导航功能却和时间无关,只和程序的层级关系有关,也就是由你自己来决定Up点击后到达那个界面

3)实现方法:

为了使appicon可点击,并显示出up的标志,需要调用setDisplayHomeAsUpEnabled方法。

[java]

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_details);

ActionBar actionBar = getSupportActionBar();

actionBar.setDisplayHomeAsUpEnabled(true);

...

}

调用该方法以后就会显示出下图的返回的标志,但是点击的时候是不会有任何效果,要起到回退导航效果,可以使用下面的两种方式之一。

3.1)通过manifest文件实现

当parent Actitvity(返回到的Activity)都一样的时候,推荐使用该方法

Android4.1(API 级别 16)或以上的版本上时,可以直接在activity节点添加parentActivityName属性。

Android4.1(API 级别 16)以下版本,还需要添加<meta-data>节点。示例代码:

[html]

<application ... >

...

<!-- The main/home activity (has no parent activity) -->

<activity

android:name="com.example.myfirstapp.MainActivity" ...>

...

</activity>

<!-- A child of the main activity -->

<activity

android:name="com.example.myfirstapp.DisplayMessageActivity"

android:label="@string/title_activity_display_message"

android:parentActivityName="com.example.myfirstapp.MainActivity" >

<!-- Parent activity meta-data to support API level 7+ -->

<meta-data

android:name="android.support.PARENT_ACTIVITY"

android:value="com.example.myfirstapp.MainActivity" />

</activity>

</application>

这样设置以后,当你点击“<”符的时候就会返回到指定的activity。

3.2)通过代码实现

该方法适用于多个界面可以到达同一个界面,也就是说parent activity不一样的情况。主要是重写getSupportParentActivityIntent() 和onCreateSupportNavigateUpTaskStack()方法.

更多内容可以参考下面两个链接。

http://developer.android.com/guide/topics/ui/actionbar.html

http://developer.android.com/training/implementing-navigation/ancestral.html

解决兼容性的问题已标红,请注意。

/**

* @author 张兴业

*http://blog.csdn.net/xyz_lmn

*iOS入门群:83702688

*android开发进阶群:241395671

*我的新浪微博:@张兴业TBOW

*/

赞助本站

人工智能实验室

相关热词: android开发 教程

相关内容
AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港