在开放过程经常会用的一些自定义样式,比如给button 设置边框,设置按下状态样式等等。
以Button 举例(按下,获取焦点,正常)样式的写法
采用图片(色值)方式
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@color/theme_item_select_bgcolor" />
<item android:state_focused="true" android:drawable="@color/theme_item_select_bgcolor" />
<item android:drawable="@color/white" />
</selector>
必须严格按照上面的顺序写,最后赋予button 的background属性
采用自定义方式(重点)
在上面的代码中修改
<?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="#0d76e1" android:endColor="#0d76e1"
android:angle="270"/>
<!--<solid android:color="#ffffff"/>-->
<stroke android:width="1dp" android:color="#f403c9"/>
<corners android:radius="2dp"/>
<padding android:left="10dp" android:bottom="10dp"
android:top="10dp" android:right="10dp"/>
</shape>
</item>
<item android:state_focused="true">
<shape>
<gradient android:startColor="#ffc2b7" android:endColor="#ffc2b7"
android:angle="270"/>
<!--<solid android:color="#ffffff"/>-->
<stroke android:width="1dp" android:color="#f403c9"/>
<corners android:radius="2dp"/>
<padding android:left="10dp" android:bottom="10dp"
android:top="10dp" android:right="10dp"/>
</shape>
</item>
<item>
<shape>
<gradient android:startColor="#000000" android:endColor="#ffffff"
android:angle="180"/>
<!--<solid android:color="#ffffff"/>-->
<stroke android:width="1dp" android:color="#f403c9"/>
<corners android:radius="5dp"/>
<padding android:left="10dp" android:bottom="10dp"
android:top="10dp" android:right="10dp"/>
</shape>
</item>
</selector>
注:代码中的各属性含义为:
gradient 主体渐变
startColor开始颜色,endColor结束颜色 ,
angle开始渐变的角度(值只能为90的倍数,0时为左到右渐变,90时为下到上渐变,依次逆时针类推)
solid 也是主体颜色,只不过没有渐变
stroke 边框 width 边框宽度,color 边框颜色
corners 圆角 radius 半径,0为直角
padding text值的相对位置
也非常简单,也非常实用
设置边线(非四边,例如底边线)
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:top="-1dp"
android:right="-1dp"
android:left="-1dp">
<shape>
<solid android:color="@color/white"/>
<stroke
android:width="0.1dp"
android:color="@color/ui_common_divider_bg"/>
</shape>
</item>
</layer-list>
这种设置 效率很高