首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ListView中触摸项目时更改行背景颜色

在ListView中触摸项目时更改行背景颜色
EN

Stack Overflow用户
提问于 2012-02-02 11:35:43
回答 3查看 9.9K关注 0票数 3

我尝试在ListView中使用BaseAdapter来显示项目。我尝试用BaseAdapter编写以下代码。

代码语言:javascript
复制
@Override
    public View getView(final int position, View convertView, ViewGroup parent) {
    //...
    convertView.setOnTouchListener(new OnTouchListener() {
@Override
    public boolean onTouch(View v, MotionEvent event) {
       switch(event.getAction()) {
         case MotionEvent.ACTION_DOWN:
         v.setBackgroundResource(R.drawable.ic_corner_four_click);
     break;

         case MotionEvent.ACTION_UP:
         v.setBackgroundResource(R.drawable.ic_corner_four);
     break;
     }

     return false;
     }
   });
}

当项目被触摸时,它将背景更改为ic_corner_four_click。但当释放手指或移动到其他项目时,它不会重新更改为ic_corner_four。如何修改?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-02 11:45:48

您应该使用StateListDrawable来定义处于特定状态的背景。See the documentation.如果你看问题的右边,你可以看到其他非常相似的问题。->

例如,This one

票数 3
EN

Stack Overflow用户

发布于 2015-01-02 16:57:37

这个问题背后的原因是你的onTouch函数总是返回false。对于ACTION_DOWN,执行代码,函数返回false。现在再也不会为ACTION_UP调用它了。将返回值更改为true应该可以解决您的问题。

票数 2
EN

Stack Overflow用户

发布于 2012-02-02 11:45:13

您需要在列表视图中设置选择模式

http://developer.android.com/reference/android/widget/AbsListView.html#CHOICE_MODE_SINGLE

代码语言:javascript
复制
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9106819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档