5

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;

基本的に私が手動でやろうとしているのとまったく同じです。

注: RippleDrawable をプログラムで作成したいので、setBackground メソッドを使用します。

なぜこれが起こっているのか誰にも分かりますか?

4

2 に答える 2

1

row にリップルを設定する代わりに、属性を使用してViewに設定します。ListViewlistSelector

<ListView
    ...
    android:listSelector="@drawable/ripple" />

プログラムで で設定できますmListView.setSelector(...)

于 2015-09-30T13:00:30.817 に答える