禁用从ListView滚动并清除按下状态

时间:2017-03-07 09:17:35

标签: android listview scroll state selected

我想创建一个无法滚动的ListView,我从讨论herehere中找到了大量帮助。如果我理解正确,那就是忽略所有MotionEvent.ACTION_MOVE事件。

这很有效,我唯一的问题是,ListView中的对象会根据状态更改背景。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:drawable="@drawable/button_selected" android:state_pressed="true" />
  <item android:drawable="@drawable/button_selected" android:state_focused="true" />
</selector>

现在有一种情况,用户想要按ListView中的项目,但随后改变主意并将手指移出视图。他按下的项目仍然保持选中状态。我在处理Move事件时尝试清除它们的按下状态,但我想我还必须考虑其他事情。

if (actionMasked == MotionEvent.ACTION_MOVE) {
    setPressed(false);
    return true;
}

1 个答案:

答案 0 :(得分:0)

您可以在xml中使用listViewItems.setChoiceMode(ListView.CHOICE_MODE_SINGLE);或在ListView中设置android:choiceMode="singleChoice"