自定义流式布局:之前的一篇文章写过,这里就不阐述了:http://blog.csdn.net/qq_24675479/article/details/78921070
随后封装一个方法工具类:GradientDrawable代替shape,StateListDrawable替换selector设置
public class DrawUtils { //GradientDrawable代替shape public static Drawable getDrawable(int rgb, float radius) { GradientDrawable gradientDrawable = new GradientDrawable(); gradientDrawable.setColor(rgb);//设置颜色 gradientDrawable.setGradientType(GradientDrawable.RECTANGLE);//shape矩形 gradientDrawable.setCornerRadius(radius);//设置圆角半径 gradientDrawable.setStroke(UIUtils.dp2px(1), rgb);//设置边框厚度和颜色 return gradientDrawable; } //StateListDrawable替换selector设置 public static StateListDrawable getSelector(Drawable normalDrawable, Drawable pressDrawable) { StateListDrawable stateListDrawable = new StateListDrawable(); //给当前的颜色选择器添加选中图片指向状态,未选中图片指向状态 stateListDrawable.addState(new int[]{android.R.attr.state_enabled, android.R.attr.state_pressed}, pressDrawable); stateListDrawable.addState(new int[]{android.R.attr.state_enabled}, normalDrawable); //设置默认状态 stateListDrawable.addState(new int[]{}, normalDrawable); return stateListDrawable; } }首先写一个文字集合
private String[] datas = new String[]{"北京欢迎你", "迪士尼3天旅游", "国家计划", "30天理财计划", "180天理财计划", "月月涨工资", "中商情报局投资牛逼", "大学老师购买房子", "屌丝下海经商计划", "美人鱼影视拍摄投资" , "Android冷门", "养猪场扩大经营", "旅游公司诈骗计划", "手机洗钱计划", "妲己回款计划", "高富帅迎娶白富美计划" };new一个TextView设置参数并添加到自定义的FlowLayout布局中
for (int i = 0; i < datas.length; i++) { final TextView tv = new TextView(getContext()); tv.setText(datas[i]); ViewGroup.MarginLayoutParams mp = new ViewGroup.MarginLayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); mp.leftMargin = UIUtils.dp2px(5); mp.rightMargin = UIUtils.dp2px(5); mp.topMargin = UIUtils.dp2px(5); mp.bottomMargin = UIUtils.dp2px(5); tv.setLayoutParams(mp); int padding = UIUtils.dp2px(5); tv.setPadding(padding, padding, padding, padding);//设置内边距 tv.setTextSize(UIUtils.dp2px(10)); Random random = new Random(); int red = random.nextInt(211); int green = random.nextInt(211); int blue = random.nextInt(211); //设置单一背景 //tv.setBackground(DrawUtils.getDrawable(Color.rgb(red,green,blue),UIUtils.dp2px(5))); tv.setBackground(DrawUtils.getSelector(DrawUtils.getDrawable(Color.rgb(red, green, blue), UIUtils.dp2px(5)) , DrawUtils.getDrawable(Color.WHITE, UIUtils.dp2px(5)))); //设置textView是可点击的.如果设置了点击事件,则TextView就是可点击的。 // tv.setClickable(true); tv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getContext(), tv.getText().toString(), Toast.LENGTH_LONG).show(); } }); flowHot.addView(tv); }按下前的结果:
点击屌丝下海经商计划后的结果