动态生成按钮样式
使用:
<代码> int borderColor=Color.parseColor (“# 2 e3135”);
int背景=Color.parseColor (“# 00 ff00”);//设置视图背景样式,有边框宽度,边框颜色,圆角度数,背景颜色。=DrawableUtils GradientDrawable形状。createShape (1, 4, borderColor背景);
btn1.setBackground(形状);
int textNormalColor=Color.parseColor (“# 2 e3135”);
int textPressColor=Color.parseColor (“# FF0000 ");
int textFocusColor=Color.parseColor (“# 00 ff00”);
int textEnableColor=Color.parseColor (" # 0000 ff ");//设置文本点击样式切换
ColorStateList ColorStateList=DrawableUtils。createColorStateList (textNormalColor textPressColor、textFocusColor textEnableColor);
btn2.setTextColor (colorStateList);/* android: focusableInTouchMode=" true "控件默认获取焦点*/int color1=Color.parseColor (“# FF0000 ");
int color2=Color.parseColor (“# 00 ff00”);//设置视图点击样式切换
GradientDrawable没有=DrawableUtils。createShape (1, 4, color1 color2);
GradientDrawable选择=DrawableUtils。createShape (1, 4, color2 color1);
StateListDrawable StateListDrawable=DrawableUtils。createStateListDrawable(选择,选择);
btn3.setBackground (stateListDrawable); 代码>
工具类:
<代码>公共类DrawableUtils {/* *
*创建一个形状
*
* @param strokeWidth边框宽度(像素)
* @param roundRadius圆角半径(像素)
* @param strokeColor边框颜色
* @param fillColor内部填充颜色
* @return GradientDrawable
*/公共静态GradientDrawable createShape (int, int roundRadius int strokeWidth strokeColor, int fillColor) {
GradientDrawable gd=new GradientDrawable ();
gd.setColor (fillColor);
gd.setCornerRadius (roundRadius);
gd。setStroke (strokeWidth strokeColor);
返回gd;
}/* *
*创建按钮文字点击样式
*
* @param正常正常样式
* @param按按下样式
* @param集中焦点样式
* @param无法不可用样式
* @return ColorStateList
*/正常公共静态ColorStateList createColorStateList (int, int, int专注,int不能){
int[]颜色=new int[]{施压,专注,正常,专注,不能正常};
int[][]州=new int [6] [];
州[0]=new int [] {android.R.attr。state_pressed android.R.attr.state_enabled};
州[1]=new int [] {android.R.attr。state_enabled android.R.attr.state_focused};
州[2]=new int [] {android.R.attr.state_enabled};
州[3]=new int [] {android.R.attr.state_focused};
州[4]=new int [] {android.R.attr.state_window_focused};
州[5]=new int [] {};
返回新ColorStateList(颜色);
}/* *
*创建按钮点击样式
*
* @param没有未点击样式
* @param选定点击样式
* @return StateListDrawable
*/公共静态StateListDrawable createStateListDrawable (GradientDrawable选择,选择GradientDrawable) {
StateListDrawable可拉的=new StateListDrawable ();
可拉的。addState(新int [] {android.R.attr。state_pressed},选择);
可拉的。addState(新int [] {-android.R.attr。state_pressed},没有选择);
返回可拉的;
}
}代码>