黑暗主题CardViews周围的白色边框

时间:2016-03-04 16:12:42

标签: android layout android-cardview

我有一个扩展CardView的自定义控件。我将它添加到线性布局,以便我可以创建一个卡网格。我没有使用ListView或RecyclerView。

我想在线性布局中设置卡片之间的间隙,所以我定义了一个边距。

卡片布局使用黑暗主题。我的应用程序使用默认材质主题(黑暗)。我正在测试Pixel C,Android 6.0.1。

<android.support.v7.widget.CardView
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="15dp"
        android:layout_marginEnd="15dp"
        card_view:cardUseCompatPadding="true"
        card_view:cardPreventCornerOverlap="false"
        card_view:cardElevation="5dp"
        style="@style/CardView.Dark">
<!-- content here -->
</android.support.v7.widget.CardView>

我将它们添加到列表视图中:

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(TableRow.LayoutParams.FILL_PARENT,
        TableRow.LayoutParams.WRAP_CONTENT);
LinearLayout newLinearLayout = new LinearLayout(this);
newLinearLayout.setLayoutParams(layoutParams);
newLinearLayout.setOrientation(LinearLayout.HORIZONTAL);

mainLayoutContainer.addView(newLinearLayout);
newLinearLayout.addView(myCardLayoutObj);

使用CardView布局的类实际上扩展了CardView本身,例如

public class MyCustomWidgetextends CardView{
    public MyCustomWidget(Context context) {
        super(context);

        LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View view = layoutInflater.inflate(R.layout.my_card_view_layout, this);
}

我看到的是这个。卡内容部分看起来很好..深色。但是CardView周围的边距/间隙是白色的。如何让它变得透明,为什么暗卡主题表现如此?另外,在这样的黑暗主题上阴影会是什么样的?

enter image description here

1 个答案:

答案 0 :(得分:3)

所以我有一个布局文件,其中包含<CardView>,如上所述。我的自定义类膨胀了这个布局扩展了CardView。所以,我在CardView中有一个CardView。 &#34;外部&#34;卡片视图,也就是我自定义类扩展的那个,从未有过它的主题集,所以它使用了默认的&#34; light&#34;主题。

因为我是以编程方式创建这个小部件,所以我认为我需要扩展CardView。这是错误的。

在:

public class MyCustomWidget extends CardView

后:

public class MyCustomWidget extends LinearLayout{
    public MyCustomWidget(Context context) {
        super(context);

        LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View view = layoutInflater.inflate(R.layout.my_card_view_layout, this);