我有一个View
以编程方式创建的,我希望在选择它时产生连锁反应。我能够使用?attr/selectableItemBackground
. 但是,我还想在View
选择它时设置它的背景颜色。我试过setBackgroundResource(selectableAttr)
然后setBackgroundColor(colorSelectBackground)
,但颜色似乎覆盖了资源,所以我只有一个或另一个。这是我的代码:
int[] attrs = new int[]{R.attr.selectableItemBackground};
TypedArray typedArray = context.obtainStyledAttributes(attrs);
int backRes = typedArray.getResourceId(0, 0);
public void select() {
view.setSelected(true);
view.setBackgroundResource(backRes);
view.setBackground(colorSelectBackground);
}
public void deselect() {
view.setSelected(false);
view.setBackground(colorSelectBackground);
}
任何人都知道我如何同时使用两者?attr/selectableItemBackground
并设置背景颜色?谢谢!
编辑: 为了澄清,有问题的视图不是一个按钮,它是一个RelativeLayout
.
更新: 我从来没有真正找到一个好的解决方案。我得到的最接近的是使用View.setForeground()
a Drawable
from the TypedArray
,即
view.setForeground(typedArray.getDrawable(0));
这样做的主要缺点是它仅在 API 23+ 上可用。如果您想出更好的解决方案,请告诉我。