将selectableItemBackground添加到CardView

时间:2015-11-14 00:34:24

标签: android android-xml android-cardview

我想将CardView的前景设置为?attr/selectableItemBackground

当我在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),但是当我按下卡片时前景不会改变。

1 个答案:

答案 0 :(得分:2)

问题是我在多张牌上使用了相同的Drawable。

您必须为每张卡检索一个新的Drawable。

this answer中的更多详情。