自定义ActionBar Listview选择的颜色

时间:2017-04-15 08:07:58

标签: java android xamarin

我正在使用自定义操作栏,所以我用我的代码在@ drawable / menu / themes.xml中创建了一个名为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>

我还用我的代码创建了一个放在@ drawable / menu / actionbar.xml中的.xml文件名操作栏:

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

所以当我使用listview时,我希望在我选择的项目上更改颜色。 我在themes.xml中尝试了这一行,但它没有用。

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

1 个答案:

答案 0 :(得分: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>

然后在代码后面通过其id找到此Toolbar并订阅listview的ItemSelected事件:

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中找到商品信息,并根据参数设置颜色。