Selector与Shape的基本用法
1. Selector
drawable 的 item 中可以有以下属性:
- android:drawable ="@drawable/drawable_resource"
- android:state_pressed =["true"| "false"] 点击
- android:state_focused =["true"| "false"] 获得焦点
- android:state_selected =["true"| "false"] 选中
- android:state_active =["true"| "false"]
- android:state_checkable =["true"| "false"] 是否可选择
- android:state_checked =["true"| "false"] 选择
- android:state_enabled =["true"| "false"] 是否响应事件
- android:state_window_focused =["true"| "false"]
2. Shape
solid:实心,就是填充
android:color = "#000000" 指定填充的颜色 |
gradient:渐变
- android:startColor 起始颜色
- android:endColor 结束颜色
- android:angle 渐变角度,必须为45的整数倍。
- 渐变模式:
- android:type="linear" 默认为线性渐变模式
- android:type="radial" 径向渐变,需要指定半径
- android:gradientRadius="50" 半径为50
stroke:描边
- android:width="2dp"描边的宽度
- android:color 描边的颜色
- 还可以把描边弄成虚线的形式,设置方式为:
- android:dashWidth="5dp"表示'-'这样一个横线的宽度
- android:dashGap="3dp" 表示'-'之间隔开的距离
corners:圆角
- android:radius 角的弧度,值越大角越圆
- 还可以把四个角设定成不同的角度:
- <corners
- android:topRightRadius="20dp" 右上角
- android:bottomLeftRadius="20dp" 右下角
- android:topLeftRadius="1dp" 左上角
- android:bottomRightRadius="0dp" 左下角
- />
这里有个地方需要注意,bottomLeftRadius是右下角,而不是左下角,这个有点郁闷,不过不影响使用,记得别搞错了就行。
padding:间隔
3. 用法:
第一种是在 listview 中配置:
android:listSelector ="@drawable/list_item_bg" |
第二种是在listview的item中添加属性:
|
|
android:background ="@drawable/list_item_bg" |
第三种是在Java代码中使用:
|
|
Drawable drawable = getResources().getDrawable(R.drawable.list_item_bg); listView.setSelector(drawable); |
4. 例:list_item_bg.xml
- <?xml version="1.0"encoding="utf-8"?>
- <selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true">
- <shape>
- <!-- 渐变 -->
- <gradient
- android:startColor="#ff8c00"
- android:endColor="#FFFFFF"
- android:type="radial"
- android:gradientRadius="50"/>
- <!-- 描边 -->
- <stroke
- android:width="2dp"
- android:color="#dcdcdc"
- android:dashWidth="5dp"
- android:dashGap="3dp"/>
- <!-- 圆角 -->
- <corners
- android:radius="2dp"/>
- <padding
- android:left="10dp"
- android:top="10dp"
- android:right="10dp"
- android:bottom="10dp"/>
- </shape>
- </item>
- <item android:state_focused="true">
- <shape>
- <gradient
- android:startColor="#ffc2b7"
- android:endColor="#ffc2b7"
- android:angle="270"/>
- <stroke
- android:width="2dp"
- android:color="#dcdcdc"/>
- <corners
- android:radius="2dp"/>
- <padding
- android:left="10dp"
- android:top="10dp"
- android:right="10dp"
- android:bottom="10dp"/>
- </shape>
- </item>
- <item>
- <shape>
- <solid android:color="#ff9d77"/>
- <stroke
- android:width="2dp"
- android:color="#fad3cf"/>
- <corners
- android:topRightRadius="5dp"
- android:bottomLeftRadius="5dp"
- android:topLeftRadius="0dp"
- android:bottomRightRadius="0dp"/>
- <padding
- android:left="10dp"
- android:top="10dp"
- android:right="10dp"
- android:bottom="10dp"/>
- </shape>
- </item>
- </selector>

浙公网安备 33010602011771号