首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法访问RippleDrawable的子级

无法访问RippleDrawable的子级
EN

Stack Overflow用户
提问于 2015-09-04 20:56:52
回答 1查看 145关注 0票数 0

我有一个以形状为背景的ImageView

代码语言:javascript
复制
<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>

通过代码,我可以很容易地改变背景色。

代码语言:javascript
复制
((GradientDrawable) img.getBackground()).setColor(newColor);

这很好,但是当用户按下视图时,我想为>Lollipop添加一个连锁反应。

因此,我将v21的xml修改为

代码语言:javascript
复制
<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,所以我想得到包含的形状。但当我做的时候

代码语言:javascript
复制
((GradientDrawable)((RippleDrawable) img.getBackground()).getDrawable(0))
.setColor(newColor)

RippleDrawable没有任何包含的绘图,所以它抛出一个异常。

为什么我不能访问包含的形状?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-04 21:15:13

找到它时,我并没有在纹章子中添加一个<item>标记。用<item>包裹形状解决了问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32406480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档