105

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

+0

@ShirishHerwade: Ten link jest już martwy. –

Odpowiedz

245

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:

Changing the Android Overflow menu icon programmatically

+1

Już znalazłem to rozwiązanie patrząc na kod źródłowy, ale dzięki :) Jest to dobra odpowiedź. – pjanecze

+6

UWAGA, że dotyczy to TEMATU, a nie STYLU. Przez jakiś czas utknąłem, dopóki się nie zorientowałem. Thx @aneal –

+5

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. –

1

@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.

0

Po długich poszukiwaniach, co mam wytyczne, których należy przestrzegać jak:

  1. Odjazd motywu w pliku manifestu.
  2. Następnie przejdź do res-> wartości-> motywy.
  3. Znajdź nazwę motywu w tym pliku.
  4. Dodaj pozycję w obrębie motywu w theme.xml:

    <item name="android:actionBarWidgetTheme">@style/widgetStyle</item> 
    <item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item> 
    
  5. 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> 
    
  6. wyjazdu niestandardowa ikona, którą chcesz zmienić:

To zadziałało dla mnie

15

Dla tych, którzy nie mogą go uruchomić, spróbuj tego BEZ przestrzeni nazw "android:".

<item name="actionOverflowButtonStyle">@style/OverFlow</item> 
+0

Dzięki kolego, to naprawdę pomogło Ktoś ma wytłumaczenia dla tego – DaMachk

+4

@DaMachk Jeśli używasz AppCompat, to nie obejmują „android” przestrzeń nazw. – matiash

4
  1. 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> 
    
  2. Put niestandardowy motyw "Mytheme" w tagu nanoszenia AndroidManifest.xml

    <application 
        android:name="com.example.android.MainApp" 
        android:theme="@style/AppTheme"> 
    </application> 
    

Baw. @. @

0

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); 
Powiązane problemy