繁体   English   中英

在xamarin listview w上更改所选颜色

[英]change selected color on xamarin listview w

非常环保的Android开发人员。 我有一个手持Zebra扫描仪我正在尝试开发一个Android应用程序。 我已经映射了音量按钮来滚动列表视图,但我能告诉它的唯一方法是滚动是将所选项目的文本放在EditText中。 我希望改为突出显示所选项目(类似于触摸项目)。 这可能吗? 下面是我用于音量键的代码。 任何帮助将不胜感激。

if (keyCode == Android.Views.Keycode.VolumeDown)
{
    if (scrollItem < itemList.Count - 1)
    {
        scrollItem += 1;
        itemListView.RequestFocusFromTouch();
        itemList.SetSelection(scrollItem);
        item = partsAdapter.GetItemAtPosition(scrollItem);
        itemEditText.Text = item.partNbr;
        saveItemDesc = item.partDescription;
    }
    return true;
}

//scroll up through parts listing
if (keyCode == Android.Views.Keycode.VolumeUp)
{
    if (scrollItem > 0)
    {
        scrollItem -= 1;
        itemList.SetSelection(scrollItem);
        item = partsAdapter.GetItemAtPosition(scrollItem);
        itemEditText.Text = item.partNbr;
        saveItemDesc = item.partDescription;
    }
    return true;
}

OnCreate...
{
    ...
    itemList = FindViewById<ListView>(Resource.Id.itemListView);
    partsAdapter = new PartsAdapter(this);
    itemList.Adapter = partsAdapter;
    itemList.ChoiceMode = ChoiceMode.Single;
    itemList.OnItemClickListener = new ListListener(this);
}

我希望突出显示所选项目

ListView项目布局中添加以下行:

android:background="@drawable/bg_key"

Drawable文件夹中定义bg_key.xml ,如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item 
        android:state_selected="true"
        android:drawable="@color/pressed_color"/>
    <item
        android:drawable="@color/default_color" />
</selector>

然后,在ListView添加OnItemClickListener

listView.OnItemClickListener = new MyListener(this);

public class MyListener : Java.Lang.Object, AdapterView.IOnItemClickListener
{
    private MainActivity mainActivity;

    public MyListener(MainActivity mainActivity)
    {
        this.mainActivity = mainActivity;
    }

    public void OnItemClick(AdapterView parent, View view, int position, long id)
    {
        view.Selected = true;
    }
}

这样,任何时候都只会选择一个项目进行颜色选择。 您可以使用以下内容在Resource/values/colors.xml定义颜色值:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="pressed_color">#4d90fe</color>
    <color name="default_color">#ffffff</color>
</resources>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM