Можно ли изменить цвет фона элемента меню в Android?
Пожалуйста, дайте мне знать, если у кого-нибудь есть решение для этого. Последний вариант, очевидно, будет настраивать его, но есть ли способ изменить цвет текста без его настройки.
Можно ли изменить цвет фона элемента меню в Android?
Пожалуйста, дайте мне знать, если у кого-нибудь есть решение для этого. Последний вариант, очевидно, будет настраивать его, но есть ли способ изменить цвет текста без его настройки.
Ответы:
Одна простая строчка в вашей теме :)
источник
actionBarStyle
например. Это не будет работать внутриactionBarStyle
, даже если это кажется логичным!<item name="actionMenuTextColor">@color/your_color</item>
не используйте пространство имен Androidtheme
атрибут на панели инструментов, это работает.Кажется, что
в моей теме и
в styles.xml изменить стиль элементов списка, но не пунктов меню.
источник
android:itemTextAppearance
Атрибут не может быть помещен в стиле , чей родитель ,parent="@android:style/Widget.Holo.ListPopupWindow"
так что не будет отображаться корректно. Он должен быть в стиле верхнего уровня, как тот, чей родительandroid:Theme.Holo.Light.DarkActionBar
.Theme.Holo
илиTheme.Holo.Light.DarkActionBar
или аналогичный.Вы можете легко изменить цвет
MenuItem
текста, используяSpannableString
вместоString
.источник
menu.findItem(R.id.menu_item_id);
вместоmenu.getItem()
Если вы используете новую панель инструментов с темой
Theme.AppCompat.Light.NoActionBar
, вы можете оформить ее следующим образом.Согласно полученным результатам,
android:textColorPrimary
это цвет текста, отображающий название вашей активности, который является основным текстом панели инструментов.android:textColorSecondary
цвет текста для кнопки субтитров и дополнительных параметров (3 точки). (Да, он изменил свой цвет в соответствии с этим свойством!)android:textColor
- цвет для всего другого текста, включая меню.Наконец, установите тему на панель инструментов
источник
android:actionMenuTextColor
(см. Stackoverflow.com/a/5538709/423105 ).Если вы используете меню как,
<android.support.design.widget.NavigationView />
то просто добавьте строку нижеNavigationView
:Также доступен colorTint для значка, он также переопределит цвет для вашего значка. Для этого вы должны добавить строку ниже:
Пример:
Надеюсь, это поможет вам.
источник
Я сделал это программно так:
источник
как вы можете видеть в этом вопросе, вы должны:
Код выше меняет цвет текста пунктов действий меню для API> = v21.
Выше приведен код для API <v21
источник
Я использовал HTML-тег, чтобы изменить цвет текста отдельного элемента, когда элемент меню раздут. Надеюсь, это будет полезно.
источник
ПРОСТОЙ способ сделать пользовательский цвет меню для одной панели инструментов, а не для AppTheme
обычная панель инструментов на styles.xml
наш собственный стиль панели инструментов
источник
в Kotlin я написал эти расширения:
и используется так:
источник
Краткий ответ: да. повезло тебе!
Для этого вам нужно переопределить некоторые стили стилей Android по умолчанию:
Сначала посмотрите на определение тем в Android:
Итак, внешний вид текста в меню находится
@android:style/TextAppearance.Widget.IconMenu.Item
сейчас, в определении стилей :
Итак, теперь у нас есть название рассматриваемого цвета, если вы посмотрите в папке цвета ресурсов системы:
Наконец, вот что вам нужно сделать:
Переопределите «TextAppearance.Widget.IconMenu.Item» и создайте свой собственный стиль. Затем свяжите его с вашим собственным селектором, чтобы сделать его так, как вы хотите. Надеюсь, это поможет вам. Удачи!
источник
Меню параметров в Android можно настроить, чтобы установить фон или изменить внешний вид текста. Фон и цвет текста в меню не могут быть изменены с помощью тем и стилей. Исходный код Android (data \ res \ layout \ icon_menu_item_layout.xml) использует пользовательский элемент класса «com.android.internal.view.menu.IconMenuItem» View для макета меню. Мы можем внести изменения в вышеупомянутый класс, чтобы настроить меню. Чтобы добиться того же, используйте фабричный класс LayoutInflater и установите цвет фона и текста для вида.
источник
03-23 19:45:25.134: E/AndroidRuntime(26761): java.lang.IllegalStateException: A factory has already been set on this LayoutInflater
Спасибо за пример кода. Мне пришлось изменить его, чтобы заставить его работать с контекстным меню. Это моё решение.
Для меня это работает с Android 1.6, 2.03 и 4.03.
источник
я нашел это Эврика!
в теме вашего приложения:
вот ваша тема панели действий:
и вот ваша всплывающая тема:
Ура;)
источник
для изменения цвета текста пункта меню используйте код ниже
где
источник
Благодаря max.musterman, вот решение, которое я получил для работы на 22 уровне:
Жесткое кодирование
Color.BLACK
может стать дополнительным параметромsetMenuTextColor
метода. Кроме того, я использовал это только для пунктов меню, которые былиandroid:showAsAction="never"
.источник
Вы можете установить цвет программно.
источник
Добавление этого в мой styles.xml работало для меня
источник
Просто добавьте это в свою тему
Проверено на API 21
источник
<style name="AppTheme.ItemTextStyle" parent="@android:style/TextAppearance.Widget">
, в противном случае текст кажется слишком маленьким в меню переполнения. Также обратите внимание, что эта техника работает только на Android 5 и выше.источник
Моя ситуация была настройкой цвета текста в меню настроек (главное меню приложения показывалось при нажатии кнопки меню).
Протестировано в API 16 с библиотекой appcompat-v7-27.0.2 ,
AppCompatActivity
дляMainActivity
иAppCompat
темой для приложения в AndroidManifest.xml .styles.xml :
Не знаю,
textColorSecondary
влияет ли это на другие элементы, но он контролирует цвет текста меню.Я искал несколько примеров по этой теме, но все готовые к использованию фрагменты не работали.
Поэтому я хотел исследовать его с помощью исходного кода для библиотеки appcompat-v7 (в частности, с папкой res пакета .aar ).
Хотя в моем случае я использовал Eclipse с разнесенными зависимостями .aar . Так что я мог бы изменить стили по умолчанию и проверить результаты. Не знаю, как взорвать библиотеки для использования с Gradle или Android Studio напрямую. Это заслуживает другого потока исследования.
Поэтому моей целью было найти какой цвет в файле res / values / values.xml для текста меню (я был почти уверен, что цвет был там).
#f00
значение.secondary_text_default_material_light
цветным элементом.@color/abc_secondary_text_material_light
.Base.ThemeOverlay.AppCompat.Light
иPlatform.AppCompat.Light
.android:textColorSecondary
иandroid:textColorTertiary
вBase.ThemeOverlay.AppCompat.Light
.android:textColorSecondary
.Theme.AppCompat.Light
а неThemeOverlay.AppCompat.Light
).Base.ThemeOverlay.AppCompat.Light
. У него был ребенокThemeOverlay.AppCompat.Light
.ThemeOverlay.AppCompat.Light
я нашел его использование вBase.Theme.AppCompat.Light.DarkActionBar
теме какactionBarPopupTheme
значения атрибута.Theme.AppCompat.Light.DarkActionBar
была дочерней из найденного,Base.Theme.AppCompat.Light.DarkActionBar
поэтому я мог использовать этот атрибут в моем styles.xml без проблем .ThemeOverlay.AppCompat.Light
и изменилandroid:textColorSecondary
атрибут.источник
Решение Сефи не работает. Можно переопределить внешний вид текста пункта меню параметров, используя метод, описанный выше, но не пункт или меню. Для этого есть по существу 3 способа:
См. Выпуск 4441: Тема меню пользовательских параметров для получения дополнительной информации.
источник
попробуй этот код ....
источник
java.lang.IllegalStateException: A factory has already been set on this LayoutInflater
Если вы хотите установить цвет для отдельного пункта меню, настройка темы панели инструментов не является правильным решением. Для этого вы можете использовать android: actionLayout и представление действий для пункта меню.
Сначала создайте файл макета XML для вида действия. В этом примере мы используем кнопку как вид действия:
menu_button.xml
В приведенном выше фрагменте кода мы используем
android:textColor="?android:attr/colorAccent"
для настройки цвета текста кнопки.Затем в вашем XML-файле макета для меню, включите
app:actionLayout="@layout/menu_button"
как показано ниже:main_menu.xml
Последний переопределите
onCreateOptionsMenu()
метод в вашей деятельности:... или фрагмент:
Подробнее о видах действий см. В руководстве разработчика Android .
источник
Вот как вы можете закрасить определенный пункт меню цветом, работает для всех уровней API:
Тем самым вы потеряете эффект селектора фона, поэтому вот код для применения пользовательского селектора фона ко всем дочерним элементам меню.
Вот вспомогательная функция также:
источник
Для изменения цвета текста вы можете просто установить пользовательский вид для MenuItem, а затем вы можете определить цвет для текста.
Пример кода: MenuItem.setActionView ()
источник