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

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

Спасибо!

ActionBar


person newdev    schedule 22.07.2011    source источник
comment
Пожалуйста, оставьте этот значок в покое. Снова и снова пользователи нападают на разработчиков, которые не придерживаются основных соглашений платформы. Если вы не можете убедительно продемонстрировать, что ваши пользователи отклонят вашу заявку, если вы не измените этот значок, оставьте этот значок в покое. При этом я все равно не вижу, где этот значок можно изменить.   -  person CommonsWare    schedule 22.07.2011
comment
Единственная причина, по которой я хотел изменить этот значок, — сделать его белым, а не черным. Фон моей панели действий очень темный в этой области, и почти невозможно увидеть значок. Я не меняю соглашения о платформе или что-то в этом роде драматичное :)   -  person newdev    schedule 26.07.2011
comment
Ах, извините, я слишком остро отреагировал. Можно было бы подумать, что везде, где вы управляете стилем панели, вы можете изменить этот значок. Я не видел значок в SDK, поэтому у меня не было строки поиска, чтобы попытаться найти его в styles.xml или kin.   -  person CommonsWare    schedule 26.07.2011
comment
Сотрудники Google, проверьте этот ответ: stackoverflow.com/a/35790470/1911652   -  person Atul    schedule 08.09.2016


Ответы (7)


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

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

В этом стиле необходимо определить:

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

Я только что проверил это, и это работает.

person KarlKarlsom    schedule 11.03.2012
comment
Он недостаточно настраиваемый. Предположим, у вас есть светлый фон с темной кнопкой переполнения. Если вы выберете темный фон для режима действия (CAB), вы не сможете переключить кнопку переполнения на светлый. - person AlikElzin-kilaka; 04.01.2013
comment
как добиться этого в Appcompat? - person Amit Tripathi; 12.02.2015

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

<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" >
person intra    schedule 15.04.2012

Если вы используете 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" >
person DjP    schedule 19.12.2014
comment
Отлично подходит для указания на разницу совместимости библиотеки поддержки - person Čikić Nenad; 08.04.2015

Я заметил, что оно становится белым, если выбрана тема приложения 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>

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

person shalafi    schedule 20.12.2011

Решение Shalafi работает с некоторыми изменениями! Вам нужно будет указать theme.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>
person Lettings Mall    schedule 21.04.2013

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

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

  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>
    

Повеселись.@.@

person Luna Kong    schedule 21.04.2015

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

Решение Шалафи работает с несколькими дополнениями: добавьте этот код и к res/values-vXX/styles.xml, и к res/values/styles.xml, и это будет работать как по волшебству!

<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" >
person Abdus Salam    schedule 04.08.2016