深色主题 CardView 周围的白色边框
White border around dark themed CardViews
我有一个扩展 CardView 的自定义控件。我将它添加到线性布局中,以便创建卡片网格。我没有使用 ListView 或 RecyclerView。
我想在线性布局中的卡片之间设置一个间隙,所以我定义了一个边距。
卡片布局使用深色主题。我的应用程序使用默认的 material 主题(深色)。我正在 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 布局的 class 实际上扩展了 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 周围的 margin/gap 是白色的。我如何让它变得透明,为什么暗卡主题会这样?另外,阴影在这样的深色主题上会是什么样子?
所以我有一个布局文件,其中包含如上所述的 <CardView>
。我的自定义 class 膨胀了此布局扩展 CardView。所以,我在 CardView 中有一个 CardView。 "outer" 卡片视图,即我的自定义 class 扩展的视图,从未设置过主题,因此它使用默认的 "light" 主题。
因为我是以编程方式创建这个小部件,所以我认为我需要扩展 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);
我有一个扩展 CardView 的自定义控件。我将它添加到线性布局中,以便创建卡片网格。我没有使用 ListView 或 RecyclerView。
我想在线性布局中的卡片之间设置一个间隙,所以我定义了一个边距。
卡片布局使用深色主题。我的应用程序使用默认的 material 主题(深色)。我正在 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 布局的 class 实际上扩展了 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 周围的 margin/gap 是白色的。我如何让它变得透明,为什么暗卡主题会这样?另外,阴影在这样的深色主题上会是什么样子?
所以我有一个布局文件,其中包含如上所述的 <CardView>
。我的自定义 class 膨胀了此布局扩展 CardView。所以,我在 CardView 中有一个 CardView。 "outer" 卡片视图,即我的自定义 class 扩展的视图,从未设置过主题,因此它使用默认的 "light" 主题。
因为我是以编程方式创建这个小部件,所以我认为我需要扩展 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);