Intereting Posts
Использует библиотеку событий, такую ​​как Otto или EventBus, рекомендуемый способ обработки отношений между действиями, фрагментами и фоновыми потоками Множество TypeFace в одиночном TextView Как изменить цвет RatingBar в зависимости от количества звезд? Как приостановить и возобновить TimerTask / Timer Можете ли вы запрашивать разрешения синхронно в модели разрешений на запуск приложений Android Marshmallow (API 23)? Отключить масштабирование фокуса ввода в веб-странице Android Дублирующие файлы, скопированные в APK META-INF / maven / com.squareup / otto / pom.xml Обновление базы данных SQLite из одной версии в другую? Обнаруживать, когда RecyclerView достигает нижней позиции при прокрутке Android: значок APK не устанавливается NewInstance failed: no <init> Список местных: MvxBind binders RecyclerView.ViewHolder – getLayoutPosition vs getAdapterPosition Как применить плагин только к одному аромату в градиенте? TaskStackBuilder # startActivities () NullPointerException

Light.DarkActionBar пункт меню цвет текста неизменен?

Приложение, которое я разрабатывал, использует ActionBarSherlock, а основная тема наследуется от Theme.Sherlock.Light.DarkActionBar. Дизайн требует, чтобы всплывающие окна переполнения имели темный цвет фона и белый текст. Это отлично работает для устройств без физической кнопки меню, и текст выглядит белым, как предполагалось. Однако, если устройство имеет физическую кнопку меню, текст, отображаемый в отображаемом меню, остается черным.

Моя основная тема

<item name="android:panelBackground">@drawable/menu_hardkey_panel</item> 

… Где @ drawable / menu_hardkey_panel – темный цвет 9patch.

В результате появляется всплывающее меню … Проблема Light.DarkActionbar

Я не могу определить, почему это происходит, или как вручную изменить цвет текста. В моей основной теме я пробовал все следующие …

 <item name="android:actionMenuTextColor">@android:color/white</item> <item name="android:textAppearanceLargePopupMenu">@style/MyMenuTextAppearance.Large</item> <item name="android:textAppearanceSmallPopupMenu">@style/MyMenuTextAppearance.Small</item> 

Я даже попробовал

 <item name="android:actionBarWidgetTheme">@style/Theme.MyApp.Dark</item> 

… Где Theme.MyApp.Dark …

 <style name="Theme.MyApp.Dark" parent="@style/Theme.Sherlock"> <item name="android:dropDownListViewStyle">@style/DropDownListView</item> <item name="dropDownListViewStyle">@style/DropDownListView</item> </style> 

Никто не позволил мне изменить текст на белый. Если я сделаю свою основную тему наследованной от Theme.Sherlock, проблема будет решена, а текст будет белым, но, к сожалению, это не вариант.

Solutions Collecting From Web of "Light.DarkActionBar пункт меню цвет текста неизменен?"

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

 <item name="android:itemTextAppearance">@style/your_new_text_appearance</item> <style name="your_new_text_appearance"> <item name="android:textColor">@android:color/white</item> </style> 

Дайте ему шанс: есть текстовый вид, называемый actionMenuTextAppearance . Вы пробовали это?

Обновление: я сделал еще немного копания, и я считаю, что этот файл является макетом. И там они ссылаются на textAppearanceListItemSmall и textAppearanceSmall . Тем не менее, он принимает это значение из специальной темы, которая указана в следующем виде в Theme.Holo.Light

 <item name="panelMenuListTheme">@android:style/Theme.Holo.Light.CompactMenu</item> 

И вот так в Theme.Holo :

 <item name="panelMenuListTheme">@android:style/Theme.Holo.CompactMenu</item> 

Проблемы возникают из-за того, что родителем Sherlock.__Theme.DarkActionBar является Theme.Sherlock.Light . Это не действует для панели темных действий. Принимая линию от Theme.Holo должен сделать трюк.

В моем исследовании я не нашел способ изменить цвет текста, но вы можете, по крайней мере, обрабатывать меню жесткой клавиатуры изящно.

Эта ссылка предоставила мне приемлемое решение проблемы: https://github.com/jgilfelt/android-actionbarstylegenerator/issues/30

Комментируя элемент «android: panelBackground» из моей сгенерированной темы, текст, по крайней мере, должен быть видимым в меню жестких клавиш, даже если он не соответствует теме.

Вы также можете попробовать заменить «menu_hardkey_panel_ whatever .9.png» на то, что будет работать с вашей темой и черным текстом.

Для меня это решает проблему, попробуйте это вместо этого:

 <style name="MyTheme" parent="Theme.Sherlock.Light.DarkActionBar"> ... <item name="actionBarWidgetTheme">@null</item> <item name="android:actionBarWidgetTheme">@null</item> ... </style> 

Я нашел решение, используя:

 getSupportActionBarContext() 

например

 ArrayAdapter<CharSequence> list = ArrayAdapter.createFromResource(getSupportActionBarContext(), R.array.navigation, layout.simple_spinner_item); list.setDropDownViewResource(layout.simple_spinner_dropdown_item); getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); getSupportActionBar().setListNavigationCallbacks(list, this); 

Я думаю, что из-за того, что Theme.Sherlock.Light.DarkActionBar не стирает его содержимое, это связано с тем, что атрибут actionWidgetTheme используется с ContextThemeWrapper для раздувания представлений панели действий (собственные слова Джейка Уортона), поэтому что-то вроде Следующие (не проверенные) будут необходимы для удовлетворения ваших потребностей, хотя вам необходимо не использовать Theme.Sherlock как родителя одним способом:

 <style name="MyColorTheme" parent="Theme.Sherlock"> <item name="android:actionMenuTextColor">@android:color/white</item> <item name="actionMenuTextColor">@android:color/white</item> </style> <style name="YourMainTheme" parent="Theme.Sherlock.Light.DarkActionBar"> <item name="android:actionMenuTextAppearance">@style/MyColorTheme</item> <item name="actionMenuTextAppearance">@style/MyColorTheme</item> </style> 

Может работать или не работать. Вот в чем вопрос 🙂