Android官方开发文档Training系列课程中文版:添加ActionBar之ActionBar浮层效果
原文地址 : http://android.xsoftlab.net/training/basics/actionbar/overlaying.html
浮層效果的ActionBar
默認(rèn)情況下,ActionBar總是會(huì)出現(xiàn)在Activity窗口的頂部,這樣會(huì)稍微的減少Activity布局的剩余空間。如果需要在用戶(hù)使用的時(shí)候隱藏和顯示ActionBar,可以通過(guò)調(diào)用ActionBar的hide()方法和show()方法。然而,這會(huì)讓Activity重新計(jì)算并且重新繪制。
為了避免ActionBar顯示隱藏的時(shí)候重新計(jì)算Activity的大小,你可以使用ActionBar的浮層模式。在浮層模式下,Activity的布局將會(huì)使用所有的可用空間,就好像ActionBar不在那里,然后系統(tǒng)會(huì)將ActionBar繪制在布局的頂層。這會(huì)遮住布局頂部的一些空間,但是當(dāng)ActionBar顯示隱藏的時(shí)候不需要重新計(jì)算布局的尺寸。它變換的時(shí)候是無(wú)縫連接的,非常平滑。
Tips: 如果想使在ActionBar后面那部分布局可見(jiàn),創(chuàng)建一個(gè)自定義的風(fēng)格,并指定一個(gè)半透明的背景,就像上面途中顯示的效果一樣。關(guān)于如何自定義ActionBar的背景,請(qǐng)看上一章的課程。
啟動(dòng)浮層模式
如果要打開(kāi)ActionBar的浮層模式,需要床架一個(gè)自定義的主題,并且繼承已存在的ActionBar主題,然后設(shè)置android:windowActionBarOverlay的屬性為true。
為Android 3.0及高版本提供支持
如果設(shè)置的minSdkVersion是11或大于11,自定義主題的話(huà)應(yīng)該繼承Theme.Holo或者是它的子類(lèi):
<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及高版本提供支持
如果APP為了運(yùn)行在Android 3.0以下的版本而使用了支持庫(kù)的話(huà),自定義的主題應(yīng)該繼承Theme.AppCompat主題或者它的子類(lèi):
<resources><!-- the theme applied to the application or activity --><style name="CustomActionBarTheme"parent="@android:style/Theme.AppCompat"><item name="android:windowActionBarOverlay">true</item><!-- Support library compatibility --><item name="windowActionBarOverlay">true</item></style> </resources>這里也應(yīng)該注意到這里定義了兩個(gè)windowActionBarOverlay屬性樣式:一個(gè)是android:前綴開(kāi)頭的,另一個(gè)沒(méi)有。有android:前綴的是用于包含有風(fēng)格的Android平臺(tái)版本,而沒(méi)有帶前綴的則是為了從支持庫(kù)讀取風(fēng)格的老版本。
指定布局的上外邊距
當(dāng)ActionBar處于浮層模式的時(shí)候,它會(huì)遮擋本來(lái)應(yīng)該處于可見(jiàn)狀態(tài)的部分布局。為了確保這部分布局一直可見(jiàn),在View的頂部使用添加外邊距或者內(nèi)邊距,并設(shè)置值為ActionBar的高度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>如果使用了支持庫(kù)的話(huà),則需要將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>在這里,沒(méi)有前綴的?attr/actionBarSize可工作于所有的版本上,包括Android 3.0及更高的版本。
總結(jié)
以上是生活随笔為你收集整理的Android官方开发文档Training系列课程中文版:添加ActionBar之ActionBar浮层效果的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 数据库的方向 - 行vs列(转自: IB
- 下一篇: 十大双跨平台整体发展情况盘点