Android动态生成按钮样式

  

动态生成按钮样式

  

使用:

  
 <代码> 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},没有选择);
  返回可拉的;
  }
  
  } 

Android动态生成按钮样式