W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
編寫(xiě):Vincent 4J - 原文:http://developer.android.com/training/basics/actionbar/overlaying.html
默認(rèn)情況下,action bar 顯示在 activity 窗口的頂部,會(huì)稍微地減少其他布局的有效空間。如果在用戶交互過(guò)程中要隱藏和顯示 action bar,可以通過(guò)調(diào)用 ActionBar 中的 hide()和show()來(lái)實(shí)現(xiàn)。但是,這將導(dǎo)致 activity 基于新尺寸重新計(jì)算與繪制布局。
為避免在 action bar 隱藏和顯示過(guò)程中調(diào)整布局的大小,可以為 action bar 啟用疊加模式(overlay mode)。在疊加模式下,所有可用的空間都會(huì)被用來(lái)布局就像ActionBar不存在一樣,并且 action bar 會(huì)疊加在布局之上。這樣布局頂部就會(huì)有點(diǎn)被遮擋,但當(dāng) action bar 隱藏或顯示時(shí),系統(tǒng)不再需要調(diào)整布局而是無(wú)縫過(guò)渡。
Note:如果希望 action bar 下面的布局部分可見(jiàn),可以創(chuàng)建一個(gè)背景部分透明的自定義式樣的 action bar,如圖 1 所示。關(guān)于如何定義 action bar 的背景,請(qǐng)查看 自定義ActionBar的風(fēng)格。
圖 1. 疊加模式下的 gallery action bar
要為 action bar 啟用疊加模式,需要自定義一個(gè)主題,該主題繼承于已經(jīng)存在的 action bar 主題,并設(shè)置 android:windowActionBarOverlay
屬性的值為 true
。
如果 minSdkVersion 為 11
或更高,自定義主題必須繼承 Theme.Holo 主題(或者其子主題)。例如:
<resources>
<!-- 為程序或者活動(dòng)應(yīng)用的主題樣式 -->
<style name="CustomActionBarTheme"
parent="@android:style/Theme.Holo">
<item name="android:windowActionBarOverlay">true</item>
</style>
</resources>
如果為了兼容運(yùn)行在 Android 3.0 以下版本的設(shè)備而使用了 Support 庫(kù),自定義主題必須繼承 Theme.AppCompat 主題(或者其子主題)。例如:
<resources>
<!-- 為程序或者活動(dòng)應(yīng)用的主題樣式 -->
<style name="CustomActionBarTheme"
parent="@android:style/Theme.AppCompat">
<item name="android:windowActionBarOverlay">true</item>
<!-- 兼容支持庫(kù) -->
<item name="windowActionBarOverlay">true</item>
</style>
</resources>
注意,該主題包含兩種不同的 windowActionBarOverlay
式樣定義:一個(gè)帶 android:
前綴,另一個(gè)不帶。帶前綴的適用于包含該式樣的 Android 系統(tǒng)版本,不帶前綴的適用于通過(guò)從 Support 庫(kù)中讀取式樣的舊版本。
當(dāng) action bar 啟用疊加模式時(shí),它可能會(huì)遮擋住本應(yīng)保持可見(jiàn)狀態(tài)的布局。為了確保這些布局始終位于 action bar 下部,可以使用 actionBarSize 屬性來(lái)指定頂部margin或padding的高度來(lái)到達(dá)。例如:
<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>
如果在 action bar 中使用 Support 庫(kù),需要移除 android:
前綴。例如:
<!-- 兼容支持庫(kù) -->
<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 和更高的所有版本。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: