Я пытаюсь установить RippleDrawable
в качестве фона для строки списка. При использовании view.setBackgroundResource(R.drawable.ripple)
все работает нормально. При попыткеsetBackgroundResource действует отличным от setBackground с RippleDrawable
view.setBackground(view.getContext().getDrawable(R.drawable.ripple))
это работает, но пульсация не отображается, когда быстро касаясь пункта (я также активированную/проверяется состояние для элемента), она появляется только тогда, когда я держу вид нажатой.
Метод setBackgroundResource в классе View выглядит следующим образом:
if (resid != 0 && resid == mBackgroundResource) {
return;
}
Drawable d = null;
if (resid != 0) {
d = mContext.getDrawable(resid);
}
setBackground(d);
mBackgroundResource = resid;
поэтому в основном точно, что я пытаюсь сделать вручную.
ПРИМЕЧАНИЕ: Я хочу использовать метод setBackground, потому что я хочу программно создать RippleDrawable.
Есть ли у кого-нибудь идеи, почему это происходит?
мне нужно имеют «активированное» состояние для строки списка и способ, которым мне удалось это достичь, - использовать фон представления напрямую и не «listSelector». Волна отлично работает с использованием этого подхода, и только я должен попытаться найти способ правильно «активировать» состояние. Мне все еще кажется странным, почему с помощью 'setBackgroundResource' он работает нормально, но с' setBackgroundDrawable' нет. Есть ли у вас какие-либо идеи по этому поводу? – GeorgeP