shape--用代码修改shape的颜色属性
12,select使用注意事项:
android selector 背景选择器的使用, button (未点击,点击,选中保持状态)效果实现;」
android selector 背景选择器的使用, button (未点击,点击,选中保持状态)效果实现
首先看到selector的属性:
android:state_focused
android:state_pressed
android:state_selected
android:state_enabled
它们之间的执行是有执行顺序的写xml的时候特别要分析好执行顺序,否则达不到要实现的效果:有点击效果,和选中效果。
注意:是有顺序的,否则不起效果;
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/color_f1f1f1" android:state_pressed="true"></item>
<item android:drawable="@color/color_f1f1f1" android:state_checked="true"></item>
<item android:drawable="@color/white"></item>
</selector>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/icon_pause_active" android:state_pressed="true"/>
<item android:drawable="@drawable/icon_pause_active" android:state_selected="true"/>
<item android:drawable="@drawable/icon_pause_inactive" android:state_enabled="true"/>
</selector>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/icon_pause_active" android:state_pressed="true"/>
<item android:drawable="@drawable/icon_pause_active" android:state_selected="true"/>
<item android:drawable="@drawable/icon_pause_inactive" android:state_enabled="true"/>
</selector>
13,====
Android里面经常会使用shape来定制一些View的背景,可以修改View的背景颜色,形状等属性
一般情况下,shape都是在xml文件里面写死了,今天遇到一个需求,View的形状是圆角的,但是颜色是在代码里面设置的
最开始的思路是先在代码里给View设置颜色,再在shape里面设置solid属性为透明色
- <?xml version="1.0" encoding="utf-8"?>
- <shape xmlns:android="http://schemas.android.com/apk/res/android" >
- <corners
- android:topLeftRadius="8dp"
- android:topRightRadius="8dp"
- android:bottomLeftRadius="8dp"
- android:bottomRightRadius="8dp"/>
- <solid
- android:color="#00000000"/>
- </shape>
- View.setBackgroundColor(color);
- View.setBackgroundDrawable(R.drawable.shape);
很遗憾,不能实现我想要的需求,每设置一次Background,Background就会就会被替换掉
最后上网Google了下,找到解决方案了http://stackoverflow.com/questions/16775891/how-to-change-solid-color-from-the-code
- GradientDrawable myGrad = (GradientDrawable)view.getBackground();
- myGrad.setColor(color);