W tej lekcji
Warto przeczytać
- Style i motywy (ang.)
Wg ustawień domyślnych pasek akcji wyświetlany jest w górnej części okna aktywności, przez co ogranicza nieco miejsce dla pozostałych elementów układu. Jeśli chciałbyś ukryć bądź z powrotem wyświetlić pasek w trakcie korzystania z aplikacji, możesz zrobić to poprzez wywołanie metod hide() i show() na obiekcie ActionBar. W takim wypadku system będzie musiał jednak ponownie obliczyć i narysować układ biorąc pod uwagę dostępne miejsce.
Rysunek 1. Pasek akcji galerii działający w trybie nakładkowym
Aby uniknąć konieczności zmieniania rozmiaru układu przy przełączaniu paska akcji, możesz aktywować tryb nakładkowy (ang. overlay mode) paska. Wówczas układ aktywności będzie zajmował całe dostępne miejsce ? tak, jakby paska akcji nie było ? zaś sam pasek zostanie nałożony na układ. Górna część układu będzie w pewnym stopniu przesłonięta, jednak przy przełączaniu paska zniknie konieczność zmiany rozmiaru układu, a animacje będą płynne.
Włączanie trybu nakładkowego
Aby przełączyć pasek akcji w tryb nakładkowy, musisz utworzyć własny motyw, który będzie rozszerzał motyw już istniejący oraz przypisać własności android:windowActionBarOverlay wartość true.
Android 3.0 i nowsze
Jeśli najniższa wersja SDK jaką obsługuje twoja aplikacja ma numer 11 lub wyższy, rodzicem utworzonego przez ciebie motywu powinien być motyw Theme.Holo (lub jakiś jego motyw potomny). Przykład:
<resources>
<!-- motyw zastosowany w aplikacji lub aktywności -->
<style name="CustomActionBarTheme"
parent="@android:style/Theme.Holo">
<item name="android:windowActionBarOverlay">true</item>
</style>
</resources>
Android 2.1 lub nowszy
Jeśli korzystasz w swojej aplikacji z biblioteki pomocniczej w celu uzyskania zgodności ze wersjami Androida starszymi niż 3.0, rodzicem utworzonego przez ciebie motywu powinien być motyw Theme.AppCompat (lub jeden z jego potomków). Przykład:
<resources>
<!-- motyw zastosowany w aplikacji lub aktywności -->
<style name="CustomActionBarTheme"
parent="@android:style/Theme.AppCompat">
<item name="android:windowActionBarOverlay">true</item>
<!-- zgodność z biblioteką pomocniczą -->
<item name="windowActionBarOverlay">true</item>
</style>
</resources>
Zwróć uwagę, że w motywie tym styl windowActionBarOverlay został zdefiniowany dwukrotnie: raz przy użyciu przedrostka android:, a raz bez. Definicja z przedrostkiem android: dotyczy tych wersji systemu, które zawierają już ten styl, zaś definicja bez przedrostka odnosi się do starszych wersji, które muszą odczytać go z biblioteki pomocniczej.
Wyznaczanie górnego marginesu układu aplikacji
Pasek akcji funkcjonujący w trybie nakładkowym może przesłonić część elementów układu aplikacji, które powinny pozostawać widoczne. Aby sprawić, by zawsze znajdowały się pod paskiem akcji można dodać górny margines albo dopełnienie, korzystając z wysokości przypisanej atrybutowi actionBarSize. Przykład:
<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>
Jeśli obsługujesz pasek akcji za pomocą biblioteki pomocniczej, musisz usunąć przedrostek android:. Przykład:
<!-- zgodność z biblioteką pomocniczą -->
<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>
W tym przypadku pozbawiona przedrostka własność attr/actionBarSize będzie działać we wszystkich wersjach systemu Android, nawet w wersji 3.0 i wyższych.

Dodaj komentarz