【问题标题】:change selected color on xamarin listview w更改 xamarin listview w 上的选定颜色
【发布时间】:2017-11-30 19:28:29
【问题描述】:

这里是非常绿色的 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);
}

【问题讨论】:

    标签: c# android listview xamarin


    【解决方案1】:

    我希望突出显示所选项目

    在您的 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>
    

    然后,将OnItemClickListener 添加到您的ListView 中:

    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>
    

    【讨论】:

    • 如果我触摸一个项目(这比我以前得到的更远),这是有效的,但当我按下侧音量键时则无效。我在什么时候将侦听器添加到列表视图?我目前将它放在 FindViewByID、Adapter 和 ChoieMode 行(在上面添加)之后的 OnCreate。
    • 我现在可以为我工作了。我添加了 ListView.RequestFocusFromTouch(); (添加到初始代码中)感谢您向我展示门。我会赞成你的回答,但它不会让我。
    猜你喜欢
    • 1970-01-01
    • 2020-06-27
    • 1970-01-01
    • 2015-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多