2011-01-05 11 views
10

讓我們來看看,代用上下文菜單顏色的Android

我知道如何改變ListView的樣式(橙色當一個項目被選中):

機器人:listSelector =「@繪製/ XXX 「,並以位圖或@color可抽拉

<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,沒有什麼改變。

+1

AFAIK,您不能更改上下文菜單的選擇器,因爲這應該是平臺的標準。 – CommonsWare 2011-01-05 14:34:48

+0

這就是我的想法,謝謝你的回答! – ferostar 2011-01-05 14:44:20

回答

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> 
+0

嗨,你在哪裏使用GradientLight風格? – Dayerman 2011-12-06 19:05:27

+0

這是我在ApplicationManifest.xml中的應用程序級別應用的主題 – NKijak 2011-12-07 01:58:36

+3

@NKijak這對我來說不適用於ICS ...:/任何想法? – 2012-04-04 03:47:11

5

這是唯一工作過的方法me:

你可以在應用主題中覆蓋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> 

,並與自己的繪製和顏色,在這種情況下替換它,

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> 

希望它能幫助!

0

以下是你是如何做到的。轉到資源> 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你真的使用了同一主題的應用程序級別:

<application 
    ... 
    android:theme="@style/AppTheme"> 

    ... 

</application>