我有一个使用形状作为背景的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);
这很有效,但我想在用户按下视图时为&gt; 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没有任何包含的drawable,因此抛出异常。
为什么我无法访问包含的形状?
答案 0 :(得分:1)
找到它,我没有在涟漪孩子身上添加1 and this is how
3 and this is do you
7 and this is dotoday
标签。用<item>
包裹形状解决了它。