让我们看看,
我知道如何更改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>
问题是,为了有一个连贯的设计,我必须为上下文菜单做同样的事情,但我只是看不到在哪里改变它。没有listSelector,没什么可改变的。
答案 0 :(得分:6)
如果通过上下文菜单表示长按菜单,那么我已使用以下代码完成此操作。我的菜单有我的主题背景和绿色突出显示。
上下文菜单布局:
<menu
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/resetConfirm" android:title="@string/actual_reset"></item>
</menu>
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>
答案 1 :(得分: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>
并将其替换为您自己的drawable和colors,在本例中为
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>
由
组成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>
和
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>
希望它有所帮助!
答案 2 :(得分:0)
这是你如何做到的。转到资源&gt; styles.xml 并覆盖主题的 itemBackgroud 属性值,如下所示:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="android:itemBackground">"YOUR_COLOUR_HERE"</item>
</style>
如果这不起作用,请在AndroidManifet.xml中检查您在App级别使用相同的主题:
<application
...
android:theme="@style/AppTheme">
...
</application>