如何使 CardView 居中并获得正确的颜色背景?
How to center the CardView and get the proper color background?
我有一个呈现如下的应用程序:
白色矩形是 CardView
。这是呈现 activity:
的 .xml
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/designerGrid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#0099cc"
android:columnCount="5"
android:rowCount="6"
android:visibility="visible"
tools:context=".visuals.CloudCardActivity">
<!-- Left Control Panel (r:0 c:0 r-span:2 c-weight:2) -->
<LinearLayout
android:id="@+id/leftControlPanel"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_column="0"
android:layout_columnSpan="2"
android:layout_row="0"
android:layout_rowSpan="6"
android:background="#0099cc"
android:gravity="top|center_horizontal"
android:orientation="vertical">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textCapCharacters"
android:text="New" />
</LinearLayout>
<!-- Top Control Panel (r:0 c:1 r-span:1 c-span:3) -->
<LinearLayout
android:id="@+id/topControlPanel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_column="2"
android:layout_columnSpan="3"
android:layout_row="0"
android:background="#0099cc"
android:gravity="left|center_vertical"
android:orientation="horizontal">
<Spinner
android:id="@+id/cardFields"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true"
android:entries="@array/default_card_fields">
</Spinner>
</LinearLayout>
<!-- Card View Panel (r:1 c:1 r-weight:8 c-weight:8) -->
<LinearLayout
android:id="@+id/cardLayout"
android:layout_column="2"
android:layout_columnSpan="3"
android:layout_row="1"
android:layout_rowSpan="5"
android:background="#a3a3a3"
android:elevation="3dp"
android:gravity="center_vertical|center_horizontal"
android:visibility="visible">
<android.support.v7.widget.CardView
android:id="@+id/cardView"
android:layout_width="560dp"
android:layout_height="320dp"
android:background="@android:color/white"
android:fadingEdge="horizontal|vertical"
android:focusable="auto"
android:gravity="center_horizontal"
android:layoutMode="clipBounds"
app:cardElevation="5dp" />
</LinearLayout>
</GridLayout>
边栏:LinearLayout
的背景颜色也未呈现。
这是预期的结果:
我是否使用了正确的布局控件?
试试这个
<android.support.v7.widget.CardView
android:id="@+id/cardView"
android:layout_width="560dp"
android:layout_height="320dp"
android:background="@android:color/white"
android:fadingEdge="horizontal|vertical"
android:focusable="auto"
android:layout_gravity="center_horizontal"
android:layoutMode="clipBounds"
app:cardElevation="5dp" />
另请阅读 -->
另一种方式
CardView 通常用于要在 ListView 或 RecyclerView 中显示的项目列表。
如果您只显示 1 Rectangle/Card,我建议使用带有圆角矩形背景的自定义视图对象。
这可以通过以下方式实现。
在您的可绘制文件夹中创建一个 XML "custom_card_bg.xml"
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid
android:color="#ffffff"/> <!-- you can give your own color here -->
<corners
android:radius="10dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
接下来,在您的自定义布局中说 "custom_rectangle_layout.xml" 在 /layout 文件夹中,使用上面的自定义背景
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_height="match_parent"
android:layout_width="match_parent"
android:background="@drawable/custom_card_bg"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<!-- your layout -->
</LinearLayout>
我有一个呈现如下的应用程序:
白色矩形是 CardView
。这是呈现 activity:
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/designerGrid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#0099cc"
android:columnCount="5"
android:rowCount="6"
android:visibility="visible"
tools:context=".visuals.CloudCardActivity">
<!-- Left Control Panel (r:0 c:0 r-span:2 c-weight:2) -->
<LinearLayout
android:id="@+id/leftControlPanel"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_column="0"
android:layout_columnSpan="2"
android:layout_row="0"
android:layout_rowSpan="6"
android:background="#0099cc"
android:gravity="top|center_horizontal"
android:orientation="vertical">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textCapCharacters"
android:text="New" />
</LinearLayout>
<!-- Top Control Panel (r:0 c:1 r-span:1 c-span:3) -->
<LinearLayout
android:id="@+id/topControlPanel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_column="2"
android:layout_columnSpan="3"
android:layout_row="0"
android:background="#0099cc"
android:gravity="left|center_vertical"
android:orientation="horizontal">
<Spinner
android:id="@+id/cardFields"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true"
android:entries="@array/default_card_fields">
</Spinner>
</LinearLayout>
<!-- Card View Panel (r:1 c:1 r-weight:8 c-weight:8) -->
<LinearLayout
android:id="@+id/cardLayout"
android:layout_column="2"
android:layout_columnSpan="3"
android:layout_row="1"
android:layout_rowSpan="5"
android:background="#a3a3a3"
android:elevation="3dp"
android:gravity="center_vertical|center_horizontal"
android:visibility="visible">
<android.support.v7.widget.CardView
android:id="@+id/cardView"
android:layout_width="560dp"
android:layout_height="320dp"
android:background="@android:color/white"
android:fadingEdge="horizontal|vertical"
android:focusable="auto"
android:gravity="center_horizontal"
android:layoutMode="clipBounds"
app:cardElevation="5dp" />
</LinearLayout>
</GridLayout>
边栏:LinearLayout
的背景颜色也未呈现。
这是预期的结果:
我是否使用了正确的布局控件?
试试这个
<android.support.v7.widget.CardView
android:id="@+id/cardView"
android:layout_width="560dp"
android:layout_height="320dp"
android:background="@android:color/white"
android:fadingEdge="horizontal|vertical"
android:focusable="auto"
android:layout_gravity="center_horizontal"
android:layoutMode="clipBounds"
app:cardElevation="5dp" />
另请阅读 -->
另一种方式
CardView 通常用于要在 ListView 或 RecyclerView 中显示的项目列表。 如果您只显示 1 Rectangle/Card,我建议使用带有圆角矩形背景的自定义视图对象。
这可以通过以下方式实现。
在您的可绘制文件夹中创建一个 XML "custom_card_bg.xml"
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid
android:color="#ffffff"/> <!-- you can give your own color here -->
<corners
android:radius="10dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
接下来,在您的自定义布局中说 "custom_rectangle_layout.xml" 在 /layout 文件夹中,使用上面的自定义背景
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_height="match_parent"
android:layout_width="match_parent"
android:background="@drawable/custom_card_bg"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<!-- your layout -->
</LinearLayout>