在Android中覆盖上下文菜单颜色

fer*_*tar 10 java user-interface android

让我们来看看,

我知道如何更改ListView的样式(选择项目时的橙色):

android:listSelector ="@ drawable/xxx"和带位图或@color的drawable

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true" android:drawable="@drawable/image" />
    <item android:drawable="@android:color/transparent" />  
</selector> 
Run Code Online (Sandbox Code Playgroud)

问题是,为了有一个连贯的设计,我必须为上下文菜单做同样的事情,但我只是看不到在哪里改变它.没有listSelector,没有什么可以改变的.

NKi*_*jak 6

如果通过上下文菜单表示长按菜单,那么我已使用以下代码完成此操作.我的菜单有我的主题背景和绿色突出显示.

上下文菜单布局:

<menu
  xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/resetConfirm" android:title="@string/actual_reset"></item>
</menu>
Run Code Online (Sandbox Code Playgroud)

styles.xml,我在哪里使用自定义主题(我认为是关键)

 <style name="GradientLight" parent="@android:style/Theme.Light">
    <item name="android:windowBackground">@drawable/background</item>
    <item name="android:progressBarStyle">@style/progressBar</item>
    <item name="android:buttonStyle">@style/greenButton</item>
    <item name="android:buttonStyleSmall">@style/greenButton</item>
    <item name="android:listViewStyle">@style/listView</item>
    <item name="android:itemBackground">@drawable/menu_selector</item>
    <item name="android:spinnerStyle">@style/spinner</item>
</style>
<style name="listView" parent="@android:style/Widget.ListView.White">
 <item name="android:background">@drawable/background</item>
 <item name="android:listSelector">@drawable/list_selector_background_green</item>
</style>
Run Code Online (Sandbox Code Playgroud)

  • @NKijak这对我来说不适用于ICS ......:/任何想法? (3认同)

小智 5

这是唯一对我有用的方法:

您可以在应用主题中覆盖android属性actionModeBackground(我在Android/Sdk/platforms/android-22/data/res/values/themes_holo.xml和R.attr中找到):

<style name="AppTheme" parent="android:Theme.Holo">
    <item name="android:windowBackground">@color/background</item>
    <item name="android:actionBarStyle">@style/MyActionBar</item>
    <item name="android:actionModeBackground">@drawable/context_menu</item>
    ...
</style>
Run Code Online (Sandbox Code Playgroud)

并用你自己的drawable和颜色替换它,在这种情况下,

context_menu.xml:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/context_menu_bottom" />
    <item android:drawable="@drawable/context_menu_top"/>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

由...组成

context_menu_bottom.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <solid android:color="@color/accent"/>
    <padding android:bottom="4dp"/>
</shape>
Run Code Online (Sandbox Code Playgroud)

和

context_menu_top.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <solid android:color="@color/primary"/>
</shape>
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!