ListView ContextMenu活动状态颜色

时间:2017-04-19 22:27:55

标签: android listview xamarin

我正在尝试让我的ListView有三种背景颜色状态。

  1. 正常
  2. 按下(当用户的手指触摸时)
  3. 上下文菜单处于活动状态(当针对特定项目显示上下文菜单时)
  4. 注意:当上下文菜单未激活时,我不需要选择状态。

    基本上,我遇到困难的部分是#3。当用户长按listview项目时,我希望显示上下文菜单,但我也希望他们按下的项目突出显示不同的颜色。

    在代码中,我有这个

    // note: the names are just to tell you what view type we're dealing with.
    // android_Widgit_ListView: the ListView
    // android_Views_View: the Cell
    if (android_Widgit_ListView != null)
    {
        android_Views_View.Background = ContextCompat.GetDrawable(context, Resource.Drawable.listview_selector);
        android_Widgit_ListView.SetSelector(Resource.Drawable.listview_selector);
        android_Widgit_ListView.CacheColorHint = Color.Transparent.ToAndroid();
    }
    

    我有一个选择器(注意不同的颜色只是为了看看是什么)

    <!-- listview_selector.xml -->
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
      <item android:state_focused="true" android:drawable="@color/PrimaryMediumBlue"/>
      <item android:state_activated="true" android:drawable="@color/PrimaryYellow"/>
      <item android:state_selected="true" android:drawable="@color/SecondaryWarmGrey"/>
      <item android:state_checked="true" android:drawable="@color/SecondaryGreen"/>
      <item android:state_pressed="true" android:drawable="@color/SecondaryLightGrey"/>
      <item android:drawable="@color/white"/>
    </selector>
    

    问题是,当我长按该项目以显示上下文菜单时,列表视图项将返回白色。

    如何让这种状态保持不同的颜色?

2 个答案:

答案 0 :(得分:0)

它有点像一种解决方法但是......

您可以将颜色更改功能绑定到上下文菜单中的属性。

ex:一个名为“active”的bool,你设置了“OnAppering”和“OnDisapering”。

实现INotifyPropertyChanged并在更改活动属性时触发事件。

然后在列表视图中监听事件并更改其上的颜色。

-

我不确定这是最好的方式......

答案 1 :(得分:0)

<style name="MyTheme" parent="MyTheme.Base">
  <item name="android:colorLongPressedHighlight">@color/ListViewHighlighted</item>
</style>
<color name="ListViewHighlighted">#A8A8A8</color>

Resourses>Values>Styles.xml

上添加此内容