Android实现为ListView同时设置点击时的背景和点击松手之后的背景
本文实例讲述了Android实现为ListView同时设置点击时的背景和点击松手之后的背景。分享给大家供大家参考。具体分析如下:
这里要达到的效果是,
(1)点击ListView的item时会有指定的背景,
(2)松手之后,刚才点击的item也会有指定的背景
实现(1)很简单:在xml中为ListView设置listSelector即可。
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中动态改变背景:
convertView.setBackgroundResource(R.color.left_selected);
}else{
convertView.setBackgroundResource(R.color.left_normal);
}
并且在该ListView的点击事件中及时更新selectedPosition:
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//更新背景色
FirstClassAdapter adapter = (FirstClassAdapter) (parent.getAdapter());
adapter.setSelectedPosition(position);
adapter.notifyDataSetChanged();
}
});
可是,问题出来了:设置了(2)之后,(1)的效果没了!!!
这是因为,在设置
时,(1)中listSelector中指定的颜色会被覆盖。
解决方法有两种:
(一)
将convertView的一个纯色的背景改为一个selector,并设置其在点击时的颜色为透明(这样下面listSelector的颜色就露出来了)。以下是selector_left_normal.xml和selector_left_selected.xml.
<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)中的代码改为:
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的ListView点击item使item展开的做法的实现代码
- Android编程实现Listview点击展开和隐藏的方法
- Android编程实现ListView中item部分区域添加点击事件功能
- Android开发实现ListView点击item改变颜色功能示例
- Android 实现ListView的点击变色的实例
- Android ListView的Item点击效果的定制
- Android ListView的item背景色设置和item点击无响应的解决方法
- Android开发之ListView实现Item局部刷新
- android ListView内数据的动态添加与删除实例代码
- android ListView和GridView拖拽移位实现代码
- Android开发实现ListView点击展开收起效果示例
相关文章
Android webview手动校验https证书(by 星空武哥)
有些时候由于Android系统的bug或者其他的原因,导致我们的webview不能验证通过我们的https证书,最明显的例子就是华为手机mate7升级到Android7.0后,手机有些网站打不开了,而更新了webview的补丁后就没问题了2017-09-09Android TextView中文本点击文字跳转 (代码简单)
用过微博Android手机端的朋友的都知道微博正文有时有一些高亮显示的文本,如话题、提到的人等等,当点击这些文本时会跳到另外一个页面(即另一个activity),下面就要来模仿微博的这个功能2016-01-01
最新评论