2011-07-22 20 views
14

Jak zmienić ikonę Menu przepełnienia po prawej stronie paska działań, jak widać na poniższym obrazku? Motyw My Holo domyślnie określa tę 3-wierszową czarną ikonę stosu i chcę czegoś innego. Nie mogę znaleźć rozwiązania tego problemu. Zapoznałem się z dokumentacją na http://developer.android.com/guide/topics/ui/menus.html, ale nie wydaje się, aby pomóc.Jak zmienić ikonę menu przelewu systemu Android

Dzięki!

"ActionBar"

+0

Proszę zostawić tę ikonę sam. Raz po raz użytkownicy atakują programistów, którzy nie przestrzegają podstawowych konwencji dotyczących platform. Jeśli nie możesz wykazać, że twoi użytkownicy odrzucą twoją aplikację, jeśli * nie * zmienisz tej ikony, zostaw tę ikonę w spokoju. Biorąc to pod uwagę, nie widzę, gdzie ta ikona może zostać zmieniona. – CommonsWare

+2

Jedynym powodem, dla którego chciałem zmienić tę ikonę, jest uczynienie z niej białego zamiast czarnego. Moje tło paska czynności jest bardzo ciemne w tym obszarze i prawie niemożliwe jest zobaczenie ikony. Nie zmieniam konwencji na platformach ani niczego tak dramatycznego :) – newdev

+0

Ach, przepraszam, przesadziłem. Można by pomyśleć, że wszędzie tam, gdzie kontrolujesz styl paska, możesz zmienić tę ikonę. Nie widziałem ikony w SDK, więc nie miałem ciągu wyszukiwania, aby spróbować go znaleźć w styles.xml lub kin. – CommonsWare

Odpowiedz

16

zdefiniować niestandardowy styl: na przykład, nazwijmy to customoverflow.

W tym stylu ustawiasz android:src na obraz, którego chcesz użyć. Teraz utwórz styl z rodzicem Theme.holo.

W tym stylu trzeba określić:

<item name="android:actionOverflowButtonStyle">@style/customoverflow</item> 

Właśnie przetestowane i działa.

+2

Nie można jej dostosować do własnych potrzeb. Załóżmy, że masz jasne tło z ciemnym przyciskiem przepełnienia. Jeśli wybierzesz ciemne tło dla trybu działania (CAB), nie możesz przełączyć przycisku przepełnienia na lekki. –

+0

jak to osiągnąć w Appcompat? –

3

zauważyłem, że staje się biały, jeśli tematem aplikacji jest Holo, ale jest czarniawy, gdy tematem jest Holo.Light

Jednakże, zmieniając styl na pasku akcji dziedziczyć z Holo i reszta aplikacji z Holo.Light nie rozwiązuje problemu, ale powinna wskazywać w kierunku, który styl modyfikujesz.

Co Próbowałem to:

<style name="AppThemeLight" parent="android:style/Theme.Holo.Light"> 
    <item name="android:actionBarStyle">@style/ActionBar</item> 
    <item name="android:windowContentOverlay">@drawable/actionbar_shadow</item> 
</style>  
<style name="ActionBar" parent="android:style/Widget.Holo.Light.ActionBar"> 
    <item name="android:background">@color/header_brown</item> 
    <item name="android:titleTextStyle">@style/ActionBarTitle</item> 
    <item name="android:icon">@drawable/header</item>  
</style> 

Mam ten sam problem i myślę, że jest blisko do roztworu

26

Można spróbować czegoś takiego:

<style name="MyTheme" parent="android:style/Theme.Holo.Light"> 
    <item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item> 
</style> 

<style name="MyActionButtonOverflow" parent="android:style/Widget.Holo.ActionButton.Overflow"> 
    <item name="android:src">@drawable/my_action_bTutton_overflow</item> 
</style> 

aw AndroidManifest.xml

<application 
    android:theme="@style/MyTheme" > 
0

rozwiązanie Shalafi za współpracuje z kilkoma zmianami! Będziesz musiał określić motyw.Holo jako rodzic tematu, ale ma on wadę w zmianie domyślnego koloru tekstu (przynajmniej w moich stylach).

Zmieniony kod powinien być:

<style name="AppThemeLight" parent="android:style/Theme.Holo"> 
    <item name="android:actionBarStyle">@style/ActionBar</item> 
    <item name="android:windowContentOverlay">@drawable/actionbar_shadow</item> 
</style>  
<style name="ActionBar" parent="android:style/Widget.Holo.Light.ActionBar"> 
    <item name="android:background">@color/header_brown</item> 
    <item name="android:titleTextStyle">@style/ActionBarTitle</item> 
    <item name="android:icon">@drawable/header</item>  
</style> 
8

Jeśli używasz AppCompat można osiągnąć stosując kod.

RES/wartości/themes.xml

<style name="MyTheme" parent="@style/Theme.AppCompat.Light"> 
    <item name="android:actionOverflowButtonStyle">@style/ActionButtonOverflow</item> 

     <!-- Support library compatibility --> 
    <item name="actionOverflowButtonStyle">@style/ActionButtonOverflow</item> 

</style> 

     <style name="ActionButtonOverflow" parent="@style/Widget.AppCompat.ActionButton.Overflow"> 
      <item name="android:src">@drawable/ic_launcher</item> 
     </style> 

aw AndroidManifest.xml

<application 
    android:theme="@style/MyTheme" > 
+2

Doskonały do ​​wskazywania różnicy kompatybilności bibliotek pomocniczych –

0

Duplikat pytanie Changing overflow icon in the action bar

To jest odpowiedź na moje pytanie, jak poniżej,

  1. Zmień niestandardową ikonę przepełnienia paska czynności w stylach.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

Zasadniczo dostosowania tematyczne dostępne w nowszych poziomów API można przejść w trybie res/values-vXX/styles.xml, a dostosowania związane z kompatybilnością wsteczną mogą przejść values/styles.xml

Rozwiązanie Shalafiego działa z kilkoma dodatkami: Więc dodaj ten kod zarówno do res/values-vXX/styles.xml jak i res/values/styles.xml, a to zadziała jak Magic!

<style name="AppTheme" parent="android:style/Theme.Holo.Light"> 
<item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item> 
</style> 

<style name="MyActionButtonOverflow"parent="android:style/Widget.Holo.ActionButton.Overflow"> 
<item name="android:src">@drawable/your_overflow_icon</item> 
</style> 

również dodać je AndroidManifest.xml

<application 
    android:theme="@style/AppTheme" > 
Powiązane problemy