Intereting Posts
Нет кэшированной версии com.android.tools.build:gradle:1.2.3 для автономного режима Активность дочерней активности TabActivity с BroadcastReceiver остается в фоновом режиме Android Data Binding: наблюдаемый список адаптера RecyclerView Перспективы Android Eclipse Как получить размер виджета Android после раскладки? Android Canvas.DrawBitmap без размытия / AntiAliasing? Расположение координатора с панелью инструментов в фрагментах или действиях Android – Адаптивная потоковая передача данных. (HLS) Качество потока Невозможно ввести представление в пользовательский класс с помощью RoboGuice Как я могу заставить этот rxjava zip работать параллельно? Изображение пользователя android share from url Как отключить lint abortOnError в Android Gradle Plugin из верхнего уровня многостраничной директории Различное поведение для FillType.EVEN_ODD при добавлении CornerPathEffect? Какой лучший язык для графического программирования в реальном времени на Android? Robolectric с использованием фрагментов и ActionBarCompat NullPointerException

Android: popupBackground не работает для контекстных меню

Почему мой код styles.xml успешно меняет цвет фона моего меню переполнения панели действий, но не удается изменить цвет фона контекстного меню в моем приложении?

 <style name="AppBaseTheme" parent="Theme.AppCompat.Light"> <!--<item name="android:actionBarStyle">@style/DarkActionBar</item> --> </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:popupMenuStyle">@style/MyPopupMenu</item> <item name="android:itemTextAppearance">@style/MyCustomMenuTextAppearance</item> </style> <!-- Popup Menu Background Color styles --> <!-- <style name="MyPopupMenu" parent="@android:style/Widget.Holo.ListPopupWindow"> --> <!-- <style name="MyPopupMenu" parent="@android:style/Widget.PopupMenu"> --> <style name="MyPopupMenu" parent="@style/Widget.AppCompat.PopupMenu"> <item name="android:popupBackground">@color/dark_gray</item> </style> <!-- Popup Menu Text Color styles --> <style name="MyCustomMenuTextAppearance"> <item name="android:textColor">@color/white</item> </style> 

Я застрял на этом пару часов, и ни одно из решений по SO для подобных вопросов не сработало для меня.

Если это помогает, вот мой код Java, где создается контекстное меню:

 @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo; String selectedWord = ((TextView) info.targetView).getText().toString(); menu.setHeaderTitle(selectedWord); MenuInflater inflater = getActivity().getMenuInflater(); inflater.inflate(R.menu.shopping_list_name_context, menu); } 

И, для полноты, вот мое контекстное меню xml, shopping_list_name_context.xml :

 <item android:id="@+id/rename_shopping_list" android:icon="@drawable/ic_action_edit" android:title="@string/rename_shopping_list" /> <item android:id="@+id/empty_shopping_list" android:icon="@drawable/ic_action_discard" android:title="@string/empty_shopping_list" /> <item android:id="@+id/delete_shopping_list" android:icon="@drawable/ic_action_discard" android:title="@string/delete_shopping_list" /> 

И, как просили, вот отрывок моего AndroidManifest.xml :

 <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="21" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.USE_CREDENTIALS" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" /> <permission android:name="com.example.myapp.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="com.example.myapp.permission.C2D_MESSAGE" /> <uses-permission android:name="com.android.vending.BILLING" /> <application android:name=".MyApplication" android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name_short" android:theme="@style/AppTheme" android:largeHeap="true" > 

Ниже приведен код для заданного фона в контекстном меню, и он работает как шарм.

В файле styles.xml введите ниже код:

 <!-- Application theme. --> <style name="AppTheme" parent="AppBaseTheme"> <item name="android:itemBackground">@android:color/holo_green_dark</item> </style> 

Вам нужно перезаписать actionModeBackground следующим образом:

 <item name="android:actionModeBackground">@drawable/context_menu</item> 

Возможный дублирующий вопрос: переопределить цвета контекстного меню в Android

В панели приложений XML:

 app:popupTheme="@style/MyCustomOverflowTheme" 

Затем в ваших styles.xml:

 <style name="MyCustomOverflowTheme" parent="Theme.AppCompat.Light"> <item name="android:textColorPrimary">@color/primaryColor</item> <item name="android:textColorSecondary">@color/accentColor</item> <item name="android:background">@color/accentColor</item> </style> 

РЕДАКТИРОВАТЬ

 app:popupTheme="@style/MyCustomOverflowTheme" 

Должен идти как ваша панель инструментов или свойство ActionBar, например:

 <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/primaryColor" app:theme="@style/MyCustomToolBarTheme" app:popupTheme="@style/MyCustomOverflowTheme" > </android.support.v7.widget.Toolbar> 

Вы пытались поставить «android: actionModeBackground» в своей теме ActionBar?

 <style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar"> <!-- main theme --> ..... <item name="actionBarStyle">@style/AppTheme.ActionBar</item> <!-- if you're using Toolbar you have to put this --> <item name="windowActionModeOverlay">true</item> </style> <style name="AppTheme.ActionBar" parent="Theme.AppCompat.Light"> ..... <item name="android:actionModeBackground">@color/theme_ambiance_dark</item> ..... </style> 

Попробуйте добавить это:

 <item name="android:popupBackground">@android:color/white</item> 

Я надеюсь, что это помогает!