圆角listview与item的背景共存问题
之前一直在纠结圆角listview的item项的背景问题,点击、松开时背景更换。我自己的思路是先设置item的圆角背景,再设置listview的android:listSelector="***",此属性表示listview的item在点击的时候样式变化设置。但是最后发现有圆角但是点击无效果。我把两个背景xml文件互换,也只有点击效果没有圆角了,囧。。。百度了好久整理了下得到了如下的解决方案:
activity 的布局文件无关紧要,有listview就好,在listview中无需设置什么特殊的属性( android:divider="#000000",取消item之间的横线),item类似,关键是item的背景文件test.xml,代码如下:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <selector xmlns:android="http://schemas.android.com/apk/res/android"> 3 4 <item android:drawable="@drawable/app_list_corner_round" android:state_focused="true" android:state_pressed="true"/> 5 <item android:drawable="@drawable/app_list_corner_round" android:state_focused="true" android:state_pressed="false"/> 6 <item android:drawable="@drawable/app_list_corner_round" android:state_focused="false" android:state_pressed="true"/> 7 <item android:drawable="@drawable/app_list_corner_round" android:state_checked="true"/> 8 <item android:drawable="@drawable/app_list_corner_round_normal"/> 9 10 11 </selector>
表示当点击item时,该item的背景样式按app_list_corner_round.xml配置执行。当松开item时按app_list_corner_round_normal.xml配置执行。
其中的app_list_corner_round.xml代码如下:
1 <?xml version="1.0" encoding="utf-8"?> 2 <shape xmlns:android="http://schemas.android.com/apk/res/android"> 3 4 <corners android:topLeftRadius="10dp" 5 android:topRightRadius="10dp" 6 android:bottomLeftRadius="10dp" 7 android:bottomRightRadius="10dp"/> 8 <gradient android:startColor="#BFEEFF" 9 android:endColor="#40B9FF" 10 android:angle="270"/> 11 12 <solid android:color="#3CC4C4"/> 13 14 </shape>
corners 各个方向的圆角弧度设置;
gradient 背景渐变色设置;
solid 背景色;(二选一)
其中的app_list_corner_round_normal.xml代码如下:
1 <?xml version="1.0" encoding="utf-8"?> 2 <shape xmlns:android="http://schemas.android.com/apk/res/android" 3 android:shape="rectangle" > 4 5 <stroke 6 android:width="1px" 7 android:color="@color/gray" /> 8 9 <solid android:color="@color/white" /> 10 11 <corners 12 android:bottomLeftRadius="10dp" 13 android:bottomRightRadius="10dp" 14 android:topLeftRadius="10dp" 15 android:topRightRadius="10dp" /> 16 17 </shape>
这样就可以解决圆角和item的背景共存的问题了。