我正在尝试将 RippleDrawable
设置为 ListView 行的背景。
使用 view.setBackgroundResource(R.drawable.ripple)
时一切正常。
尝试时
view.setBackground(view.getContext().getDrawable(R.drawable.ripple))
它可以工作,但是当快速触摸该项目时不会显示波纹(我也有该项目的激活/选中状态),只有当我按住 View 时它才会出现。
View 类中的 setBackgroundResource 方法如下所示:
if (resid != 0 && resid == mBackgroundResource) {
return;
}
Drawable d = null;
if (resid != 0) {
d = mContext.getDrawable(resid);
}
setBackground(d);
mBackgroundResource = resid;
所以基本上就是我想手动做的事情。
注意:我想使用 setBackground 方法,因为我想以编程方式创建 RippleDrawable。
有人知道为什么会这样吗?
最佳答案
不是在 View
行上设置波纹,而是使用 listSelector
属性在 ListView
上设置它:
<ListView
...
android:listSelector="@drawable/ripple" />
以编程方式,您可以使用 mListView.setSelector(...)
进行设置。
关于android - setBackgroundResource 的行为不同于 setBackground with RippleDrawable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32813279/