我正在构建一个具有透明背景的CardView,并且遇到了尝试将cardBackgroundColor设置为带有alpha通道的问题。
这是我尝试过的:
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/list_view_btn"
android:layout_width="@dimen/icon_size"
android:layout_height="@dimen/icon_size"
android:layout_gravity="bottom|start"
android:layout_marginLeft="@dimen/activity_horizontal_margin"
android:layout_marginStart="@dimen/activity_horizontal_margin"
android:layout_marginBottom="@dimen/icon_bottom_margin"
card_view:cardBackgroundColor="#66F9F9F9"
card_view:cardCornerRadius="3dp"/>
结果是CardView按钮没有任何透明度(但使用F9F9F9灰色,忽略66 alpha值)。因此,下一步是尝试以编程方式执行此操作:
mListBtn.setPreventCornerOverlap(false);
int baseColor = getResources().getColor(R.color.material_gray);
mListBtn.setCardBackgroundColor(Color.argb(50,
Color.red(baseColor),
Color.green(baseColor),
Color.blue(baseColor)));
结果如下:
请注意,中心和边框之间有填充。 CardView是空的,没有子视图,我尝试使用/不使用setPreventCornerOverlap()调用来查看这是否是问题...有人可以解释为什么会发生这种情况吗?
1)为什么带有cardBackgroundColor的CardView的XML定义忽略了alpha着色
2)为什么以编程方式设置cardBackgroundColor会使着色起作用,但是现在有一个隐式添加的填充?