Czy można zmienić ikonę przepełnienia na pasku akcji? Mam niebieskie ikony dla wszystkich elementów ActionBar i chcę również zmienić ikonę przepełnienia, gdy się pojawi.Zmiana ikony przepełnienia na pasku akcji
Odpowiedz
Możesz użyć stylu, ale musisz go dodać do głównej deklaracji tematu.
<resources>
<!-- Base application theme. -->
<style name="Your.Theme" parent="@android:style/Theme.Holo">
<!-- Pointer to Overflow style ***MUST*** go here or it will not work -->
<item name="android:actionOverflowButtonStyle">@style/OverFlow</item>
</style>
<!-- Styles -->
<style name="OverFlow" parent="@android:style/Widget.Holo.ActionButton.Overflow">
<item name="android:src">@drawable/ic_action_overflow</item>
</style>
</resources>
Można również ją zmieniać dynamicznie, co mam wchodzić w szczegóły o tutaj:
Już znalazłem to rozwiązanie patrząc na kod źródłowy, ale dzięki :) Jest to dobra odpowiedź. – pjanecze
UWAGA, że dotyczy to TEMATU, a nie STYLU. Przez jakiś czas utknąłem, dopóki się nie zorientowałem. Thx @aneal –
To zawiesi się na tabletach z Androidem 3.0 (API 11), ponieważ nie lubi ludzi określających styl "android: actionOverflowButtonStyle" (prawdopodobnie błąd platformy). Więc musisz użyć różnych stylów w wartościach - v11/styles.xml i values-v15/styles.xml. –
@adneal's answer jest prawidłowe (tak jest to po prostu wyjaśnienie Wiki rozszerzyć na nim).
Jeden z komentarzy sugerował, że mogą być nieporozumienia, jak to zrobić, więc moja odpowiedź jest tylko kolejnym przykładem, jak zastąpić obraz ikony przepełnienia.
Poniższy kod jest oparty na stylach szablonów z przykładowego projektu ADT Nowy Android Project. Kod pochodzi z pliku styles.xml
w folderze res/values
.
<style name="AppBaseTheme" parent="android:Theme.Light">
<!--
Theme customizations available in newer API levels can go in
res/values-vXX/styles.xml, while customizations related to
backward-compatibility can go here.
-->
</style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
<item name="android:actionOverflowButtonStyle">@style/OverflowMenuButton</item>
</style>
<style name="OverflowMenuButton" parent="@android:style/Widget.Holo.ActionButton.Overflow">
<item name="android:src">@drawable/ic_menu_moreoverflow</item>
</style>
Co to powyższy kod nie jest zastąpić ikonę domyślną przelewowy ze cokolwiek odkształcalne masz o nazwie ic_menu_moreoverflow
. Jeśli chcesz szybki sposób na przetestowanie go, użyj nazwy pliku programu uruchamiającego aplikacji, co sprawi, że stanie się to oczywiste.
użytecznym źródłem do wykorzystania, gdy próbuje zrozumieć ActionBar
stylizacji jest:
Nie można zdefiniować konkretne kolory do wykorzystania na ikonę przelewem, a plik ZIP obejmie poprawny plik styles.xml
dla ciebie.
Po długich poszukiwaniach, co mam wytyczne, których należy przestrzegać jak:
- Odjazd motywu w pliku manifestu.
- Następnie przejdź do res-> wartości-> motywy.
- Znajdź nazwę motywu w tym pliku.
Dodaj pozycję w obrębie motywu w theme.xml:
<item name="android:actionBarWidgetTheme">@style/widgetStyle</item> <item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item>
Dodaj ikonę stylu w tym samym pliku rozumiem theme.xml:
<style name="MyActionButtonOverflow" parent="android:style/Widget.Holo.ActionButton.Overflow"> <item name="android:src">@drawable/icon_menu</item> </style>
wyjazdu niestandardowa ikona, którą chcesz zmienić:
To zadziałało dla mnie
Dla tych, którzy nie mogą go uruchomić, spróbuj tego BEZ przestrzeni nazw "android:".
<item name="actionOverflowButtonStyle">@style/OverFlow</item>
Zmień swój własny przelewowy ikonę Actionbar w styles.xml.
<resources> <!-- Base application theme. --> <style name=“MyTheme" parent="@android:style/Theme.Holo"> <!-- Pointer to Overflow style DONT forget! --> <item name="android:actionOverflowButtonStyle">@style/MyOverFlow</item> </style> <!-- Styles --> <style name="MyOverFlow" parent="@android:style/Widget.Holo.ActionButton.Overflow"> <item name="android:src">@drawable/ic_your_action_overflow</item> </style> </resources>
Put niestandardowy motyw "Mytheme" w tagu nanoszenia AndroidManifest.xml
<application android:name="com.example.android.MainApp" android:theme="@style/AppTheme"> </application>
Baw. @. @
Bez względu na to, co starałem się zrobić w styles.xml
żadne z rozwiązań nie zadziałało. W końcu, jeśli masz AppCompat 23+, co powinieneś, to jest najprostszy sposób, który faktycznie działa:
toolbar.setOverflowIcon(drawable);
@ShirishHerwade: Ten link jest już martwy. –