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


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

6 106

6 ответов:

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

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

для тех, кто не может заставить его работать попробуйте это без пространства имен "android:".

<item name="actionOverflowButtonStyle">@style/OverFlow</item>
  1. измените свой пользовательский значок переполнения панели действий в стилях.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>
    

получать удовольствие.@.@

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

toolbar.setOverflowIcon(drawable);

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

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

код ниже основан на стилях шаблона из образца ADT нового проекта Android. Код приходит от на 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>

что этот код выше делает, это заменить значок переполнения по умолчанию с любым drawable у вас есть, что называется ic_menu_moreoverflow. Если вы хотите быстро проверить его, используйте имя файла значка запуска вашего приложения, что сделает его очевидным, как это работает.

полезный ресурс для использования при попытке понять ActionBar стайлинг, это:

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

после долгого поиска, что я получил руководство, чтобы следовать, как:

  1. Проверьте тему в файле манифеста.
  2. затем перейдите в res->значения - > темы.
  3. найдите имя темы в этом файле .
  4. добавить элемент в тему в тему.XML-код:

    <item name="android:actionBarWidgetTheme">@style/widgetStyle</item>
    <item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item>
    
  5. добавить значок в стиле в том же файле, я имею в виду тема.XML-код:

    <style name="MyActionButtonOverflow" parent="android:style/Widget.Holo.ActionButton.Overflow">
    <item name="android:src">@drawable/icon_menu</item>
    </style>
    
  6. проверить пользовательский значок, который вы хотите чтобы изменить

это сработало для меня