2.4 action栏层叠化

来源:互联网 发布:智者软件官网 编辑:程序博客网 时间:2024/05/24 05:08

缺省情况下,action栏显示在activity窗口的上方,占用窗口的一小部分。如果开发者希望在用户使用过程中能够根据需要灵活的隐藏action栏,可以使用ActionBar的Hide()和Show()方法。但是这样会导致activity重新计算大小和重新绘制界面布局。

使能action栏的overlay模式,可以避免上述动作。对于overlay模式,activity的界面布局将忽略action栏使用完整的可用空间进行绘制,而系统则将action栏绘制在activity界面布局的上方。这样虽然会使action栏遮盖界面布局的一部分,但是当action栏根据需要显示或者隐藏时,系统无需再重新计算activity的界面布局的大小。

技巧: 如果希望action栏显示时也能够看到界面布局被遮盖的部分,可以创建一个使用半透明背景的action栏样式,如图1所示。定制action栏章节介绍如何定制一个半透明背景的action栏样式。

使能overlay模式

Android 3.0或者更高版本

如果minSdkVersion设置为11或者更高,基于Theme.Holo样式或者其衍生样式创建定制样式,如:

<resources> 
   
<!-- the theme applied to the application or activity --> 
   
<style name="CustomActionBarTheme" 
           
parent="@android:style/Theme.Holo"> 
       
<item name="android:windowActionBarOverlay">true</item> 
   
</style> 
</resources>

Android 2.1或者更高版本

定义界面布局的顶部边界

 被层叠化的action栏会使部分本应正常显示的界面布局模糊显示。为了保证一些元素能够始终不被action栏遮挡,可以为这些元素的相关View添加基于actionBarSize的指定高度值的边界或者填充。例如:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
   
android:layout_width="match_parent" 
   
android:layout_height="match_parent" 
   
android:paddingTop="?android:attr/actionBarSize"> 
    ... 
</RelativeLayout>

如果使用的是支撑库来实现actionBar,则不需要使用android前缀,如:

<!-- Support library compatibility --> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
   
android:layout_width="match_parent" 
   
android:layout_height="match_parent" 
   
android:paddingTop="?attr/actionBarSize"> 
    ... 
</RelativeLayout>

这样,不带前缀的?attr/actionBarSize能够适应所有版本,包括Android 3.0及更高版本。
0 0