2014-11-24 448 views
2

CardView的默认白色背景有问题或者我缺少什么?当我将CardView填充为普通的未设置的Android UI时,TextView的白色文本不可读,例如CardView默认背景颜色有问题

有人知道一个很好的解决方案吗?我使用默认的“Theme.AppCompat”主题,其他背景颜色看起来正确。这是Theme.AppCompat中缺少的属性吗?或者我做错了什么?没有手动设置任何值的默认颜色应始终工作或不工作?

编辑:

我现在应用默认的背景色为当前样式到cardview这样的:

TypedArray array = context.getTheme().obtainStyledAttributes(
      new int[] { android.R.attr.colorBackground }); 
    card.setCardBackgroundColor(array.getColor(0, 0xFF00FF)); 

我认为这是一个非常节约“默认”修复至少有在屏幕截图中没有文字颜色问题,但问题仍然是什么应该是这里的最佳做法,以及为什么Cardview无论使用什么主题都具有白色作为默认背景色。

Screenshot from Android 4.4 device

+0

尽可能多的Android中CradView其他的东西充满了错误。但是如果你想仔细看看源代码中的llok:https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/LayoutInflater.java,特别是方法初始化()。在那里您会看到它应该根据主题背景为背景选择浅色或深色。然而......它没有。欢迎来到臭虫的集合...我的意思是机器人。 – f470071 2017-02-16 14:11:22

+0

更改cardview所在布局的背景颜色。 – 2017-09-13 17:06:52

回答

-1

通过这种方式,你可以改变Cardview背景颜色,

RoundRectDrawable backgroundDrawable = new RoundRectDrawable(backgroundColor, cardView.getRadius()); 
cardView.setBackgroundDrawable(backgroundDrawable); 
+0

更好地使用card.setCardBackgroundColor(color);)但是这不是我认为的默认bahaviour的好解决方案。 CardView的默认颜色应该与默认文本颜色相反,至少这就是我所期望的。 – 2014-11-24 11:19:23

+0

不这样做,请使用新的API来设置背景颜色。调用它会在棒棒糖之前崩溃cardview。 – yigit 2014-11-25 01:33:54