2017-04-15 71 views
0

我使用的是自定義的操作欄,所以我必須創建一個XML文件namedthemes改成@繪製/菜單/的themes.xml我的代碼:自定義動作條列表視圖中選擇顏色

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<!-- the theme applied to the application or activity --> 
<style name="CustomActionBarTheme" 
    parent="@android:style/Theme.Holo.Light.DarkActionBar"> 
<item name="android:actionBarStyle">@style/MyActionBar</item> 
<item name="android:windowNoTitle">false</item> 
<item name="android:windowFullscreen">true</item> 
</style> 

<!-- ActionBar styles --> 
<style name="MyActionBar" 
    parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse"> 
<item name="android:background">#2d73c4</item> 
</style> 

</resources> 

此外,我創建的.xml當我使用一個ListView,我選擇的項目要改變顏色

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 

<item android:id="@+id/search" 
    android:showAsAction="always" 
    android:title="Αναζήτηση" 
    android:icon="@drawable/ic_action_search"/> 

</menu> 

所以我想:文件名動作條放入@繪製/菜單/ actionbar.xml我的代碼。 我在我的themes.xml中嘗試了這一行,但它沒有奏效。

<item name="android:colorActivatedHighlight">@android:color/transparent</item> 
+0

不能安靜地理解你的問題,你有一個列表視圖,當你選擇一個項目,你的操作欄應該改變它的顏色?哪種顏色?背景? –

+0

完全正確。現在,當我選擇項目不會改變背景顏色。 – Dim

+0

您是否在應用中添加了「工具欄」小部件?你可以通過id找到它,並在後面的代碼中設置它的背景顏色。 –

回答

0

我假設你正在使用Toolbarandroid.support.v7.widget.Toolbar小部件爲您的操作欄,然後我拿一個例子在這裏使用Toolbar部件:

<?xml version="1.0" encoding="utf-8" ?> 
<Toolbar xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:minHeight="?android:attr/actionBarSize" 
    android:background="?android:attr/colorPrimary" 
    android:theme="@android:style/ThemeOverlay.Material.Dark.ActionBar" /> 

然後在您頁,其中包括ListView用於更改動作欄的背景顏色,可以包括此Toolbar

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <include 
     android:id="@+id/toolbar" 
     layout="@layout/toolbar" /> 

    <ListView 
    android:id="@+id/lv" 
    android:layout_height="match_parent" 
    android:layout_width="match_parent" /> 

</LinearLayout> 

然後在後面的代碼發現這Toolbar通過ID和認購ItemSelected事件的ListView:

public Toolbar toolbar; 

protected override void OnCreate(Bundle bundle) 
{ 
    base.OnCreate(bundle); 
    SetContentView(Resource.Layout.Main); 

    toolbar = FindViewById<Toolbar>(Resource.Id.toolbar); 
    SetActionBar(toolbar); 

    ListView lv = (ListView)FindViewById(Resource.Id.lv); 

    lv.ItemSelected += Lv_ItemSelected; 
} 

最後,設置例如這樣的背景色:

private void Lv_ItemSelected(object sender, AdapterView.ItemSelectedEventArgs e) 
{ 

    toolbar.SetBackgroundColor(Color.BlueViolet); 
} 

當然你也可以找到該項目的信息在AdapterView.ItemSelectedEventArgs中,並根據參數設置顏色。

+0

我沒有使用android.support.v7.widget.Toolbar。不幸的是,它不工作。但我也在MyListViewAdapter中試過這個工具。 row.click + =代表{.SetBackgroundColor(Color.BlueViolet);};但是,然後它不工作我的主要活動代碼在項目單擊事件 – Dim

+0

@Dim,'工具欄'和'android.support.v7.widget.Toolbar'都可以工作,我的示例使用'工具欄'。我不知道爲什麼你的代碼不工作,它在我身邊很好,我使用的事件是'ItemSelected',也許你可以共享你的示例,或者你的主要活動的更多代碼,包括xml代碼和後端碼。 –