it-swarm.com.ru

Изменение значка переполнения на панели действий

Можно ли изменить значок переполнения на панели действий? У меня есть синие значки для всех элементов ActionBar, и я также хочу изменить значок переполнения, когда он появляется.

106
pjanecze

Вы можете со стилем, но вы должны добавить его в основное объявление Theme.

<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 программно

248
adneal

Для тех, кто не может заставить его работать, попробуйте это БЕЗ пространства имен "Android:".

<item name="actionOverflowButtonStyle">@style/OverFlow</item>
16
user2968401
  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>
    

Повеселись[email protected]@

4
Luna Kong

Что бы я ни пытался сделать в styles.xml, ни одно из решений не сработало для меня. В конце концов, если у вас AppCompat 23+, что вам и нужно, это самый простой способ, который действительно работает:

toolbar.setOverflowIcon(drawable);
3
Starwave

@ adneal ответ правильный (так что это просто объяснение вики сообщества).

В одном из комментариев высказывалось предположение, что может возникнуть недопонимание, как это сделать, поэтому мой ответ - просто еще один пример того, как переопределить изображение значка переполнения.

Приведенный ниже код основан на шаблонах стилей из образца 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:

Там вы можете определить конкретные цвета для значка переполнения, и файл Zip будет включать в себя правильный файл styles.xml для вас.

1
Richard Le Mesurier

После долгого поиска, что я получил руководство, которому нужно следовать, как:

  1. Проверьте тему в файле манифеста.
  2. Затем перейдите в res-> values-> themes.
  3. Найдите название темы в этом файле.
  4. Добавьте элемент в тему в theme.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. Проверьте пользовательский значок, который вы хотите изменить

У меня сработало

0
Issac Balaji

Для изменения цвета значка переполнения, вы можете просто добавить

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

или же

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

Это изменит иконку, выберет любой цвет, который вы хотите, и установите его как Overflowicon.

0
Navin Kumar