Android 代码里获得某个View的背景selector 并修改其属性
在网上找了好多资料 就看到一个StateListDrawable好像比较有关系 但是这个类怎么用 具体不懂 网上只有添加的 没有获得的 而且我找到一个返回Drawable的方法
但是我在类里调用 找不到这个方法
请问有什么办法从代码得到View背景的selector 并修改其属性吗
你想要修改什么属性?getStateDrawable这个方法返回对应index位置的drawable对象。是隐藏的API。
其实这个对象就是解析Selector出来的。
可以对这个对象修改的方法就是addState(int[] state, Drawable drawable)。
这相当于在Selector中最后加一个Item,其中参数state就是给定的状态值。因为状态可以有多个,所以是个数组。
stateListDrawable.addState(
new int[]{android.R.attr.state_pressed, - android.R.attr.state_checkable},
getDrawable(android.R.color.holo_red_dark));
stateListDrawable.addState(
new int[]{},
getDrawable(android.R.color.holo_blue_dark));
效果相当于xml文件
<?xml version="1.0" encoding="utf-8"?>
android:state_checkable="false"
android:drawable="@android:color/holo_red_dark" />
重新设置一个select不行么
楼主:重新定义一个selector的资源文件,view引用就可以的
这个倒还真没有用过,解决了麻烦说一下
楼上说的对 具体的方法 http://blog.csdn.net/wenwen091100304/article/details/49667293
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true"
android:state_checkable="false"
android:drawable="@android:color/holo_red_dark" />
<item android:drawable="@android:color/holo_blue_dark" />
</selector>
如果想更一步修改这些状态的话,可以用反射调用隐藏API或者直接修改存放state和drawable的字段。