Відповіді:
Можна зі стилем, але потрібно додати його до основної декларації теми.
<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>
Ви також можете змінити це динамічно, про що я детально описуюсь тут:
parent="Widget.Sherlock.ActionButton.Overflow"
parent="@style/Widget.AppCompat.ActionButton.Overflow"
здається, працює для мене.
Для тих, хто не може змусити його працювати, спробуйте це БЕЗ простору імен "android:".
<item name="actionOverflowButtonStyle">@style/OverFlow</item>
Змініть власну піктограму переповнення панелі дій у 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>
Повеселіться. @. @
Що б я не намагався зробити styles.xml
, жодне з рішень не працювало на мене. Зрештою, якщо у вас є AppCompat 23+, який вам слід, це найпростіший спосіб, який насправді працює:
toolbar.setOverflowIcon(drawable);
@ відповідь 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
для вас файл.
Для зміни кольору значка переповнення ви можете просто додати
toolbar.setOverflowicon(getDrawable(R.id.whiteIcon));
або
toolbar.setOverflowicon(getDrawable(R.id.redIcon));
Він змінить піктограму, вибере будь-який колір, який ви хочете, і встановить як Overflowicon.
Після довгих пошуків я отримав вказівки, як слід:
Додати елемент теми в тему.xml:
<item name="android:actionBarWidgetTheme">@style/widgetStyle</item>
<item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item>
Додайте значок у стилі до того самого файлу, який я маю на увазі theme.xml:
<style name="MyActionButtonOverflow" parent="android:style/Widget.Holo.ActionButton.Overflow">
<item name="android:src">@drawable/icon_menu</item>
</style>
Перегляньте спеціальну піктограму, яку потрібно змінити
Це працювало для мене