2015-11-14 5 views
2

Я хочу установить передний план моего CardView на ?attr/selectableItemBackground.Добавить selectableItemBackground в CardView

Это работа, когда я объявляю на переднем плане в XML:

android:foreground="?attr/selectableItemBackground" 

Но я хочу, чтобы установить передний план программно. Это не работает:

int[] attrs = new int[]{R.attr.color_a, R.attr.selectableItemBackground}; 
TypedArray ta = context.obtainStyledAttributes(attrs); 
mColorA = ta.getColor(0, 0); 
mSelectableItemBackground = ContextCompat.getDrawable(context, ta.getResourceId(1, 0)); 
ta.recycle(); 

... 

cardView.setOnClickListener(onClickListener); 
cardView.setClickable(true); 
cardView.setForeground(mSelectableItemBackground); 

Однако извлечение атрибутов работы (mSelectableItemBackground содержит RippleDrawable), но на первый план не меняется при нажатии на карту.

+0

Я думаю, что я только нашел возможное решение здесь: http://stackoverflow.com/q/27474279/4752807 .. Я тоже использую один и тот же экземпляр на нескольких карточках. Затем я должен исследовать и обновлять этот вопрос. – Auroratic

+0

Вы видели этот ответ? http://stackoverflow.com/a/30192562/4409409 –

ответ

1

Проблема заключалась в том, что я использовал тот же Drawable с несколькими карточками.

Вы должны получить новый Drawable для каждой Карты.

Подробнее в this answer.

Смежные вопросы