赞
踩
在Android里面,实现TextView等根据不同状态显示不同的背景和颜色是很简单滴,只需要设置对应的selector就好了!
背景选择器(res/drawable):
颜色选择器(res/color):
那么我们需要动态设置这些东西怎么写呢?这里就有两个类了:StateListDrawable,ColorStateList看这个名字就知道这两个类是来干嘛的了!
首先说下StateListDrawable
创建对应的StateListDrawable,通过addState (int[] stateSet, Drawable drawable)的方法添加我们指定的一些状态,可以看到第一个参数是一个数组,后面就是对应的Drawable。那么问题来了,一个状态的true或者false是怎么指定的呢?答案就是下面这个样子滴:
StateListDrawable states = new StateListDrawable();
states.addState(new int[]{-android.R.attr.state_checked}, getDrawable(android.R.drawable.ic_media_play));
states.addState(new int[]{android.R.attr.state_checked}, getDrawable(android.R.drawable.ic_delete));
return states;
前面有一个负号就是false的状态!
然后就是ColorStateList了,它的构造方法public ColorStateList(int[][] states, @ColorInt int[] colors),看着是不是有点儿腻害
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。