【发布时间】:2019-07-19 12:36:24
【问题描述】:
为什么我的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" >
【问题讨论】:
-
你能发布你的 AppManifest.xml 吗?
-
好的,现在已经添加了它的相关部分。
-
检查这个stackoverflow Post。
-
我不得不求助于更改前景色,但从那以后我有了很多新的答案,所以我现在就去看看......
-
@Heyyou 我已经尝试了所有建议,但没有一个奏效。我认为一些回答者认为这是我要更改的溢出菜单,而实际上我是在尝试更改长按视图后显示的上下文菜单(在本例中为自定义文本视图)。
标签: android xml android-contextmenu