Как изменить значок меню переполнения Android

Как изменить значок меню переполнения в крайнем правом углу панели действий, как показано на рисунке ниже? Моя тема Holo указывает эту иконку с тремя строками черного стека по умолчанию, и я хочу что-то еще. я не могу найти решение для этого. Я просмотрел документацию на http://developer.android.com/guide/topics/ui/menus.html, но, похоже, не очень помогает.

Спасибо!

"ActionBar"

Ответы

Ответ 1

Определите пользовательский стиль: например, позвоните ему customoverflow.

В этом стиле вы устанавливаете android:src на изображение, которое хотите использовать. Теперь создадим стиль с родительским Theme.holo.

В этом стиле вам нужно определить:

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

Я просто тестировал это, и он работает.

Ответ 2

Вы можете попробовать что-то вроде этого:

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

и в AndroidManifest.xml

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

Ответ 3

Если вы используете AppCompat, вы можете достичь этого кода.

RES/значения/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>

и в androidmanifest.xml

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

Ответ 4

Я заметил, что она становится белой, если тема приложения - Holo, но она черноватая, когда тема Holo.Light

Однако, изменив стиль панели действий, чтобы наследовать от Holo и остальную часть приложения от Holo.Light, не решает проблему, но она должна указывать направление, в котором вы должны модифицировать стиль.

Я пробовал:

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

У меня такая же проблема, и я думаю, что это близко к решению

Ответ 5

Решение Shalafi работает с несколькими изменениями! Вам нужно будет указать тему. Holo как родитель для темы, но она имеет недостаток в изменении цвета текста по умолчанию (по крайней мере, в моих стилях).

Измененный код должен быть:

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

Ответ 6

Дублирующий вопрос, Изменение значка переполнения в панели действий

Это мой ответ, как показано ниже,

  • Измените значок пользовательского переполнения панели действий в 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>
    
  • Поместите пользовательскую тему "MyTheme" в тег приложения AndroidManifest.xml

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

Удачи. @. @

Ответ 7

В основном настройки темы, доступные на более новых уровнях API, могут находиться в res/values-vXX/styles.xml, тогда как настройки, связанные с обратной совместимостью, могут идти values/styles.xml

Решение Шалафи работает с несколькими дополнениями: So  добавьте этот код как к res/values-vXX/styles.xml, так и к res/values/styles.xml, и это будет работать как 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>

также добавьте его в AndroidManifest.xml

<application
    android:theme="@style/AppTheme" >

Ответ 8

<style name="ToolBarTheme" parent="ThemeOverlay.AppCompat.ActionBar">
    <item name="android:tint">@color/colorAccent</item>

создайте этот атрибут темы и добавьте его на панель инструментов.

<androidx.appcompat.widget.Toolbar
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minHeight="?attr/actionBarSize"
        android:theme="@style/ToolBarTheme"/>