我正在尝试将RippleDrawable
设置为列表视图行的背景。
使用view.setBackgroundResource(R.drawable.ripple)
时一切正常。
在尝试时
view.setBackground(view.getContext().getDrawable(R.drawable.ripple))
它可以工作,但是当快速触摸项目时没有显示波纹(我也有项目的激活/检查状态),只有在我按下视图时才会出现。
View类中的setBackgroundResource方法如下所示:
if (resid != 0 && resid == mBackgroundResource) {
return;
}
Drawable d = null;
if (resid != 0) {
d = mContext.getDrawable(resid);
}
setBackground(d);
mBackgroundResource = resid;
所以基本上我试图手动完成。
注意:我想使用setBackground方法,因为我想以编程方式创建RippleDrawable。
有人知道为什么会这样吗?
答案 0 :(得分:1)
不是在行View
上设置涟漪,而是使用ListView
属性在listSelector
上设置:
<ListView
...
android:listSelector="@drawable/ripple" />
以编程方式,您可以使用mListView.setSelector(...)
设置它。
答案 1 :(得分:1)
拨打 View.invalidate();
以及 View.requestLayout();
CompoundButton
函数setChecked(boolean)
在使用时会使View
无效,因此要求View
重新检查自身,然后重新绘制或布局