android 中的 CardView 文本覆盖图像视图
CardView Text overlay over imageview in android
这是我正在尝试做的一个例子:
我这样做的结果很糟糕:
XML 包含带有 ImageView 的 CardView、2 个 TextView 和 ButtonImage 的代码:
这是我的 XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.v7.widget.CardView
android:id="@+id/cardView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:background="@color/card"
app:cardCornerRadius="5dp"
app:cardElevation="6dp"
app:cardMaxElevation="10dp"
app:contentPadding="25dp">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativeLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/masarImg"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="auto"
android:scaleType="centerCrop" />
<TextView
android:id="@+id/masarTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/mapBtn"
android:layout_alignParentStart="true"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="43dp"
android:background="#AA000000"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="24dp"
android:text="SomeText"
android:textColor="#ffffffff"
android:textSize="24sp" />
<TextView
android:id="@+id/descreption"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/mapBtn"
android:layout_alignParentStart="true"
android:layout_gravity="center_horizontal"
android:background="#AA000000"
android:paddingBottom="16dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:text="SomeText"
android:textColor="#ffffffff"
android:textSize="14sp" />
<ImageButton
android:id="@+id/mapBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:padding="8dp"
app:srcCompat="@drawable/b" />
</RelativeLayout>
</android.support.v7.widget.CardView>
你能帮我 XML 代码以获得漂亮的结果吗?
为了更好的设计,我建议您使用RoundedImageView(在卡片内设置图像角)。
布局:
1. res/layout.xml
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.v7.widget.CardView
android:id="@+id/cardView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="20dp"
android:background="@android:color/white"
android:layout_gravity="center"
app:cardCornerRadius="10dp"
app:cardElevation="20dp">
<!--Card Image-->
<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/img"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@drawable/test"
app:riv_corner_radius="10dp"/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="20dp">
<!--Title & Description Text-->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start|bottom"
android:orientation="vertical">
<!--Title Text-->
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/transparent_card">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textAlignment="center"
android:text="Title"
android:textColor="@android:color/white"
android:textSize="24sp"
android:layout_margin="5dp"/>
</FrameLayout>
<!--Description Text-->
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/transparent_card"
android:layout_marginTop="5dp">
<TextView
android:id="@+id/description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textAlignment="center"
android:text="Description"
android:textColor="@android:color/white"
android:textSize="20sp"
android:layout_margin="5dp"/>
</FrameLayout>
</LinearLayout>
<!--Button-->
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/transparent_card"
android:layout_gravity="end|bottom"
android:clickable="true"
android:focusable="true">
<FrameLayout
android:id="@+id/btn"
android:layout_width="30dp"
android:layout_height="30dp"
android:background="@android:drawable/ic_menu_share"
android:layout_margin="5dp"/>
</FrameLayout>
</FrameLayout>
</android.support.v7.widget.CardView>
</FrameLayout>
2。 drawable/transparent_card.xml
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid
android:color="#78000000"/>
<corners
android:radius="5dp"/>
</shape>
布局将如下所示:
这是我正在尝试做的一个例子:
我这样做的结果很糟糕:
XML 包含带有 ImageView 的 CardView、2 个 TextView 和 ButtonImage 的代码:
这是我的 XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.v7.widget.CardView
android:id="@+id/cardView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:background="@color/card"
app:cardCornerRadius="5dp"
app:cardElevation="6dp"
app:cardMaxElevation="10dp"
app:contentPadding="25dp">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativeLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/masarImg"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="auto"
android:scaleType="centerCrop" />
<TextView
android:id="@+id/masarTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/mapBtn"
android:layout_alignParentStart="true"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="43dp"
android:background="#AA000000"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="24dp"
android:text="SomeText"
android:textColor="#ffffffff"
android:textSize="24sp" />
<TextView
android:id="@+id/descreption"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/mapBtn"
android:layout_alignParentStart="true"
android:layout_gravity="center_horizontal"
android:background="#AA000000"
android:paddingBottom="16dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:text="SomeText"
android:textColor="#ffffffff"
android:textSize="14sp" />
<ImageButton
android:id="@+id/mapBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:padding="8dp"
app:srcCompat="@drawable/b" />
</RelativeLayout>
</android.support.v7.widget.CardView>
你能帮我 XML 代码以获得漂亮的结果吗?
为了更好的设计,我建议您使用RoundedImageView(在卡片内设置图像角)。
布局:
1. res/layout.xml
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.v7.widget.CardView
android:id="@+id/cardView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="20dp"
android:background="@android:color/white"
android:layout_gravity="center"
app:cardCornerRadius="10dp"
app:cardElevation="20dp">
<!--Card Image-->
<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/img"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@drawable/test"
app:riv_corner_radius="10dp"/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="20dp">
<!--Title & Description Text-->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start|bottom"
android:orientation="vertical">
<!--Title Text-->
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/transparent_card">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textAlignment="center"
android:text="Title"
android:textColor="@android:color/white"
android:textSize="24sp"
android:layout_margin="5dp"/>
</FrameLayout>
<!--Description Text-->
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/transparent_card"
android:layout_marginTop="5dp">
<TextView
android:id="@+id/description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textAlignment="center"
android:text="Description"
android:textColor="@android:color/white"
android:textSize="20sp"
android:layout_margin="5dp"/>
</FrameLayout>
</LinearLayout>
<!--Button-->
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/transparent_card"
android:layout_gravity="end|bottom"
android:clickable="true"
android:focusable="true">
<FrameLayout
android:id="@+id/btn"
android:layout_width="30dp"
android:layout_height="30dp"
android:background="@android:drawable/ic_menu_share"
android:layout_margin="5dp"/>
</FrameLayout>
</FrameLayout>
</android.support.v7.widget.CardView>
</FrameLayout>
2。 drawable/transparent_card.xml
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid
android:color="#78000000"/>
<corners
android:radius="5dp"/>
</shape>
布局将如下所示: