CardView setCardBackground颜色在代码

时间:2015-10-11 09:50:31

标签: android android-layout

我一直试图解决这个问题,超过3个小时。

JellyBeab 4.1.6

我有一个包含卡片视图的布局,我正在以编程方式设置setCardbackground颜色。

到目前为止我尝试过的是

    CARD = (CardView) view.findViewById(R.id.cardMechInfo);
    int[] array = new int[4];
    array[0] = activity.getResources().getColor(R.color.LightSkyBlue);
    array[1] = activity.getResources().getColor(R.color.Teal200);
    array[2] = activity.getResources().getColor(R.color.LightGrey);
    array[3] = activity.getResources().getColor(R.color.LightCoral);
    int randomColor = new Random().nextInt(array.length);
    CARD.setCardBackgroundColor(randomColor);

这样的布局文件层次结构。

<android.support.v7.widget.CardView
    android:id="@+id/cardMechInfo"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:layout_marginTop="5dp"
    android:layout_weight="1"
    FAB:cardCornerRadius="5dp"
    android:gravity="center_vertical|center_horizontal"
    android:orientation="horizontal">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="5dp"
        android:gravity="center_vertical|center_horizontal"
        android:orientation="horizontal"
        > ..........

问题是当随机颜色设置时,颜色似乎出现在卡的末端,就像一条细线。

有没有人遇到这样的问题。请建议如何解决这个问题。

谢谢, Pusp

3 个答案:

答案 0 :(得分:0)

您似乎在LinearLayout内部CardView并且周围有5dp个边距。

如果您的LinearLayout背景不透明,您将无法再看到CardView的背景。因此,您可以将LinearLayout的背景设置为透明或半透明,然后您可以看到CardView的背景。

完全透明:

android:background="@android:color/transparent"

对于半透明,您可以设置它的Alpha通道。

答案 1 :(得分:0)

卡内的LinearLayout具有match_parent的宽度和高度,因此它遮挡了卡的大部分背景。

答案 2 :(得分:0)

<强>解

似乎pskink指出我随机值会返回一些惊喜值,因为他建议我使用它:

int randomColor = array[new Random().nextInt(array.length)];

然后它适用于cardView。