İşlem çubuğundaki taşma simgesini değiştirme


Yanıtlar:


255

Bir stille yapabilirsiniz, ancak onu ana Tema bildirimine eklemeniz gerekir.

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

Bunu dinamik olarak da değiştirebilirsiniz, bunu burada ayrıntılarıyla anlatacağım:

Android Overflow menü simgesini programlı olarak değiştirme


1
Bu çözümü zaten kaynak koduna bakarak buldum, ama teşekkürler :) Bu iyi bir cevap.
pjanecze

6
Bunun STİL'e değil TEMA'ya uygulandığına dikkat edin. Bunu anlayana kadar bir süre takılıp kaldım. Thx @aneal
Richard Le Mesurier

5
Bu, Android 3.0 (API 11) çalıştıran tabletlerde çökecektir, çünkü insanların "android: actionOverflowButtonStyle" stilini (muhtemelen platform hatası) tanımlamasını sevmez. Dolayısıyla, values-v11 / styles.xml ve values-v15 / styles.xml'de farklı stiller kullanmanız gerekir.
Mr-IDE

10
ActionBarSherlock kullanıcıları için ana stil şu şekildedir:parent="Widget.Sherlock.ActionButton.Overflow"
Nick White

7
Appcompat için (yine de v21 lolipop) parent="@style/Widget.AppCompat.ActionButton.Overflow"benim için çalışıyor gibi görünüyor.
fattire

16

Çalışmasını sağlayamayanlar için bunu "android:" ad alanı OLMADAN deneyin.

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

Teşekkürler dostum, bu gerçekten yardımcı oldu. Bunun için bir açıklaması olan var mı?
DaMachk

4
@DaMachk AppCompat kullanıyorsanız, "android:" ad alanını dahil etmeyin.
matiash

4
  1. Styles.xml'de Actionbar'ın özel taşma simgenizi değiştirin.

     <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. AndroidManifest.xml'nin uygulama etiketine özel "MyTheme" temasını yerleştirin

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

İyi eğlenceler.@.@


4

Ne yapmaya çalıştığım önemli değil styles.xml, çözümlerin hiçbiri benim için işe yaramadı. Sonunda, AppCompat 23+ sürümüne sahipseniz, ki yapmalısınız, bu gerçekten işe yarayan en kolay yoldur:

toolbar.setOverflowIcon(drawable);

Bulduğum en doğru yol!
Shubhamhackz

1

@ adneal'ın cevabı doğru (bu yüzden bu sadece onu genişletmek için bir topluluk wiki açıklamasıdır).

Yorumlardan biri, bunun nasıl yapılacağının yanlış anlaşılabileceğini öne sürdü, bu nedenle cevabım, Taşma simgesi görüntüsünün nasıl geçersiz kılınacağına dair başka bir örnek.

Aşağıdaki kod, ADT örneği Yeni Android Projesi'ndeki şablon stillerine dayanmaktadır. Kod styles.xml, res/valuesklasördeki dosyadan gelir .


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

Yukarıdaki kodun yaptığı şey, varsayılan taşma simgesini, adlandırdığınız çekilebilir özellik ile değiştirmektir ic_menu_moreoverflow. Test etmenin hızlı bir yolunu istiyorsanız, uygulamanızın başlatıcı simgesi dosya adını kullanın; bu, nasıl çalıştığını açıkça gösterecektir.

ActionBarStilleri anlamaya çalışırken kullanılacak yararlı bir kaynak şudur:

Orada Taşma simgeniz için kullanmak üzere belirli renkler tanımlayabilirsiniz ve ZIP dosyası styles.xmlsizin için doğru dosyayı içerecektir .


1

Taşma simgesi renk değişikliği için, sadece ekleyebilirsiniz

toolbar.setOverflowicon(getDrawable(R.id.whiteIcon));

veya

toolbar.setOverflowicon(getDrawable(R.id.redIcon));

Simgeyi değiştirecek, istediğiniz rengi seçecek ve Taşma simgesi olarak ayarlayacaktır.


0

Uzun bir araştırmadan sonra izlenecek rehberliği şöyle buldum:

  1. Manifesto dosyasındaki temayı kontrol edin.
  2. Ardından res-> values-> temalara gidin.
  3. Bu dosyada tema adını bulun.
  4. Temanın içindeki öğeyi theme.xml dosyasına ekleyin:

    <item name="android:actionBarWidgetTheme">@style/widgetStyle</item>
    <item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item>
  5. Aynı dosyaya stildeki simgeyi ekleyin yani theme.xml:

    <style name="MyActionButtonOverflow" parent="android:style/Widget.Holo.ActionButton.Overflow">
    <item name="android:src">@drawable/icon_menu</item>
    </style>
  6. Değiştirmek istediğiniz özel simgeye göz atın

Benim için çalıştı

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.