Зміна значка переповнення на панелі дій


111

Чи можливо змінити значок переповнення на панелі дій? У мене є сині значки для всіх елементів ActionBar, і я також хочу змінити значок переповнення, коли він з'явиться.


@ShirishHerwade: Це посилання зараз мертве.
Аль-Лелопат

Відповіді:


255

Можна зі стилем, але потрібно додати його до основної декларації теми.

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

Ви також можете змінити це динамічно, про що я детально описуюсь тут:

Програмна зміна піктограми меню Android Overflow


1
Я вже знайшов це рішення, вивчаючи вихідний код, але дякую :) Це хороша відповідь.
pjanecze

6
Зверніть увагу, що це стосується ТЕМИ, а не СТИЛИ. Довго затримався, поки я не зрозумів цього. Thx @aneal
Richard Le Mesurier

5
Це призведе до збоїв на планшетах під керуванням Android 3.0 (API 11), оскільки це не подобається людям, що визначають стиль "android: actionOverflowButtonStyle" (ймовірно, помилка платформи). Тож вам доведеться використовувати різні стилі у значеннях-v11 / styles.xml та значень-v15 / styles.xml.
Містер-ІДЕ

10
А для користувачів ActionBarSherlock батьківський стиль такий:parent="Widget.Sherlock.ActionButton.Overflow"
Нік Уайт

7
Для appcompat (v21 льодяник все одно), parent="@style/Widget.AppCompat.ActionButton.Overflow"здається, працює для мене.
фініш

16

Для тих, хто не може змусити його працювати, спробуйте це БЕЗ простору імен "android:".

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

Спасибі товариш, це справді допомогло. Хтось отримав пояснення цьому?
DaMachk

4
@DaMachk Якщо ви використовуєте AppCompat, не включайте простір імен "android:".
matiash

4
  1. Змініть власну піктограму переповнення панелі дій у 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. Помістіть власну тему "MyTheme" у тег програми AndroidManifest.xml

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

Повеселіться. @. @


4

Що б я не намагався зробити styles.xml, жодне з рішень не працювало на мене. Зрештою, якщо у вас є AppCompat 23+, який вам слід, це найпростіший спосіб, який насправді працює:

toolbar.setOverflowIcon(drawable);

Найточніший спосіб, який я знайшов!
Shubhamhackz

1

@ відповідь adneal правильна (тому це лише пояснення вікі спільноти, щоб розширити її).

Один із коментарів припустив, що може виникнути непорозуміння, як це зробити, тому моя відповідь - лише черговий приклад того, як замінити зображення піктограми Overflow.

Код нижче базується на стилях шаблонів із зразка ADT New Android Project. Код надходить з styles.xmlфайлу в 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>

Цей вищезгаданий код - це замінити піктограму переповнення за замовчуванням на те, що у вас є, що має назви ic_menu_moreoverflow. Якщо ви хочете швидкий спосіб перевірити це, скористайтеся назвою файлу піктограми запуску програми, що дозволить зрозуміти, як це працює.

Корисним ресурсом, який потрібно використовувати при спробі зрозуміти ActionBarстилізацію, є:

Там ви можете визначити конкретні кольори, які використовуватимуться для вашої піктограми Overflow, і ZIP-файл буде містити правильний styles.xmlдля вас файл.


1

Для зміни кольору значка переповнення ви можете просто додати

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

або

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

Він змінить піктограму, вибере будь-який колір, який ви хочете, і встановить як Overflowicon.


0

Після довгих пошуків я отримав вказівки, як слід:

  1. Перевірте тему у файлі маніфесту.
  2. Потім перейдіть до res-> values-> теми.
  3. Знайдіть ім'я теми у цьому файлі.
  4. Додати елемент теми в тему.xml:

    <item name="android:actionBarWidgetTheme">@style/widgetStyle</item>
    <item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item>
  5. Додайте значок у стилі до того самого файлу, який я маю на увазі theme.xml:

    <style name="MyActionButtonOverflow" parent="android:style/Widget.Holo.ActionButton.Overflow">
    <item name="android:src">@drawable/icon_menu</item>
    </style>
  6. Перегляньте спеціальну піктограму, яку потрібно змінити

Це працювало для мене

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.