我正在尝试让我的ListView有三种背景颜色状态。
注意:当上下文菜单未激活时,我不需要选择状态。
基本上,我遇到困难的部分是#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>
问题是,当我长按该项目以显示上下文菜单时,列表视图项将返回白色。
如何让这种状态保持不同的颜色?
答案 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