我有一个以形状为背景的ImageView
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#fedc13" />
<stroke
android:width="2dp"
android:color="#cccccc" />
<size
android:width="120dp"
android:height="120dp" />
</shape>通过代码,我可以很容易地改变背景色。
((GradientDrawable) img.getBackground()).setColor(newColor);这很好,但是当用户按下视图时,我想为>Lollipop添加一个连锁反应。
因此,我将v21的xml修改为
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#FF0000">
<shape android:shape="oval">
<solid android:color="#fedc13" />
<stroke
android:width="1dp"
android:color="#00FF00" />
<size
android:width="120dp"
android:height="120dp" />
</shape>
</ripple>现在要访问该形状,img.getBackground()现在返回一个RippleDrawable,所以我想得到包含的形状。但当我做的时候
((GradientDrawable)((RippleDrawable) img.getBackground()).getDrawable(0))
.setColor(newColor)RippleDrawable没有任何包含的绘图,所以它抛出一个异常。
为什么我不能访问包含的形状?
发布于 2015-09-04 21:15:13
找到它时,我并没有在纹章子中添加一个<item>标记。用<item>包裹形状解决了问题。
https://stackoverflow.com/questions/32406480
复制相似问题