Android实现为ListView同时设置点击时的背景和点击松手之后的背景

 更新时间:2015年02月06日 14:55:01   作者:books1958  
这篇文章主要介绍了Android实现为ListView同时设置点击时的背景和点击松手之后的背景,以实例形式较为详细的分析了界面元素与功能的实现技巧,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了Android实现为ListView同时设置点击时的背景和点击松手之后的背景。分享给大家供大家参考。具体分析如下:

这里要达到的效果是,

(1)点击ListView的item时会有指定的背景,

(2)松手之后,刚才点击的item也会有指定的背景

实现(1)很简单:在xml中为ListView设置listSelector即可。

复制代码 代码如下:
<ListView 
android:id="@+id/pop_listview_left" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:scrollbars="none" 
android:divider="@color/popup_left_bg" 
android:dividerHeight="1dp" 
android:listSelector="@color/popup_right_bg" 
android:scrollingCache="false" 
/>

实现(2)也很简单,在adapter中动态改变背景:

复制代码 代码如下:
if (position == selectedPosition){ 
    convertView.setBackgroundResource(R.color.left_selected);
}else{ 
    convertView.setBackgroundResource(R.color.left_normal);
}

并且在该ListView的点击事件中及时更新selectedPosition:
复制代码 代码如下:
leftLV.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
 //更新背景色 
 FirstClassAdapter adapter = (FirstClassAdapter) (parent.getAdapter()); 
 adapter.setSelectedPosition(position); 
 adapter.notifyDataSetChanged(); 
    } 
});

可是,问题出来了:设置了(2)之后,(1)的效果没了!!!
这是因为,在设置

复制代码 代码如下:
convertView.setBackgroundResource(R.color.left_selected);
 
时,(1)中listSelector中指定的颜色会被覆盖。

解决方法有两种:

(一)

将convertView的一个纯色的背景改为一个selector,并设置其在点击时的颜色为透明(这样下面listSelector的颜色就露出来了)。以下是selector_left_normal.xml和selector_left_selected.xml.

复制代码 代码如下:
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" 
        android:drawable="@android:color/transparent"/> 
 
    <item android:state_pressed="false" 
        android:drawable="@color/popup_left_bg"/> 
</selector> 

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" 
        android:drawable="@android:color/transparent"/> 
 
    <item android:state_pressed="false" 
        android:drawable="@color/popup_right_bg"/> 
</selector>

然后将(2)中的代码改为:

复制代码 代码如下:
if (position == selectedPosition){ 
    convertView.setBackgroundResource(R.drawable.selector_left_selected); 
}else{ 
    convertView.setBackgroundResource(R.drawable.selector_left_normal); 
}

(二)

参照(一),将ListView的listSelector属性去掉,并将其颜色复制到上面两个selector中替换transparent那个颜色。

也就是说,每次点击ListView的条目之后,设置背景色时,

(a)如果该条目现在是选中状态,则直接设为某一个颜色

(b)否则,将其颜色设置为一个selector,并在selector中分别指定点击和没有点击时的颜色。

问题圆满解决。

希望本文所述对大家的Android程序设计有所帮助。

相关文章

  • Android View如何绘制

    Android View如何绘制

    要了解View如何绘制,就需要了解canvas(画布)是什么?paint(画笔)能够做什么,想要深入了解的朋友可以参考一下
    2016-05-05
  • Android webview手动校验https证书(by 星空武哥)

    Android webview手动校验https证书(by 星空武哥)

    有些时候由于Android系统的bug或者其他的原因,导致我们的webview不能验证通过我们的https证书,最明显的例子就是华为手机mate7升级到Android7.0后,手机有些网站打不开了,而更新了webview的补丁后就没问题了
    2017-09-09
  • Android使用Handler和Message更新UI

    Android使用Handler和Message更新UI

    这篇文章主要介绍了Android使用Handler和Message更新UI的相关资料,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • Android 对话框 Dialog使用实例讲解

    Android 对话框 Dialog使用实例讲解

    对话框是在当前的页面之上弹出的小窗口, 用于显示一些重要的提示信息, 提示用户的输入,确认信息,或显示某种状态.如 : 显示进度条对话框, 退出提示.接下来通过本文给大家介绍android dialog对话框知识,感兴趣的朋友一起看看吧
    2016-09-09
  • android实现常驻通知栏遇到的问题及解决办法

    android实现常驻通知栏遇到的问题及解决办法

    这篇文章主要介绍了android实现常驻通知栏遇到的问题及解决办法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • 基于DownloadManager的简单下载器编写小结

    基于DownloadManager的简单下载器编写小结

    Android自带的DownloadManager是一个很好的下载文件的工具。该类在API level 9之后出现,它已经帮我们处理了下载失败、重新下载等功能,整个下载过程全部交给系统负责,不需要我们过多的处理,非常的nice。关键的是用起来也很简单,稍微封装一下就可以几句话搞定下载
    2017-12-12
  • Android TextView中文本点击文字跳转 (代码简单)

    Android TextView中文本点击文字跳转 (代码简单)

    用过微博Android手机端的朋友的都知道微博正文有时有一些高亮显示的文本,如话题、提到的人等等,当点击这些文本时会跳到另外一个页面(即另一个activity),下面就要来模仿微博的这个功能
    2016-01-01
  • android中强制更新app实例代码

    android中强制更新app实例代码

    本篇文章主要介绍了android中强制更新app实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Android编程实现异步消息处理机制的几种方法总结

    Android编程实现异步消息处理机制的几种方法总结

    这篇文章主要介绍了Android编程实现异步消息处理机制的几种方法,结合实例形式详细总结分析了Android异步消息处理机制的原理、相关实现技巧与操作注意事项,需要的朋友可以参考下
    2018-08-08
  • Android studio设置文件头定制代码注释的方法

    Android studio设置文件头定制代码注释的方法

    这篇文章主要介绍了Android studio设置文件头定制代码注释的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-08-08

最新评论