Android CardView包含ImageView和TextView问题

时间:2017-07-26 15:17:13

标签: android textview imageview overlay cardview

我创建了一个项目XML文件,我希望将其传递给Adapter,以便我可以在RecyclerView中显示项目列表。

布局文件包含CardView,其中包含显示电影海报的ImageView和显示电影标题的TextView

我的问题是,我找不到将TextView放在ImageView上的方法,以便在海报上方看到标题。

我的xml文件:

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/dimension_value_10"
>

    <android.support.v7.widget.CardView
        app:cardCornerRadius="@dimen/dimension_value_5"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:elevation="@dimen/dimension_value_15"
        android:id="@+id/movie_poster_card"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true">

            <ImageView
                android:id="@id/movie_poster_image"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:elevation="10dp" />

            <TextView
                android:id="@+id/movie_title_text_view"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_above="@+id/movie_poster_card"
                android:layout_centerHorizontal="true"
                android:gravity="center|start"
                android:layout_margin="@dimen/dimension_value_10"
                android:paddingLeft="@dimen/dimension_value_10"
                android:text="Movie title here"
                android:textColor="@color/white"
                android:layout_gravity="bottom"
                android:textSize="26sp" />

    </android.support.v7.widget.CardView>

以下是更明确的设计图像:

enter image description here

3 个答案:

答案 0 :(得分:0)

CardView实际上只是为了生一个孩子。您应该将ImageViewTextView包裹在FrameLayout之类的内容中,并将其作为CardView子项。

答案 1 :(得分:0)

您可以在 CardView 中使用垂直LinearLayout ,并将textView设为中心..

<android.support.v7.widget.CardView
    app:cardCornerRadius="@dimen/dimension_value_5"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:elevation="@dimen/dimension_value_15"
    android:id="@+id/movie_poster_card"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            android:id="@+id/movie_title_text_view"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_above="@+id/movie_poster_card"
            android:layout_centerHorizontal="true"
            android:gravity="center"
            android:layout_margin="@dimen/dimension_value_10"
            android:paddingLeft="@dimen/dimension_value_10"
            android:text="Movie title here"
            android:textColor="@color/white"
            android:layout_gravity="bottom"
            android:textSize="26sp" />

        <ImageView
            android:id="@id/movie_poster_image"
            android:layout_width="match_parent"
            android:layout_height="200dp"
            android:elevation="10dp" />

    </LinearLayout>

</android.support.v7.widget.CardView>

答案 2 :(得分:-1)

以相对布局包装imageview和textview,并将高程移动到相对布局容器,以保持您正在寻找的阴影效果。

编辑::

我不确定为什么这会被投票,因为这是正确答案。

为清楚起见,您应将代码更改为:

<android.support.v7.widget.CardView
    app:cardCornerRadius="@dimen/dimension_value_5"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:elevation="@dimen/dimension_value_15"
    android:id="@+id/movie_poster_card"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:elevation="10dp" >

        <ImageView
            android:id="@id/movie_poster_image"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

        <TextView
            android:id="@+id/movie_title_text_view"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_above="@+id/movie_poster_card"
            android:layout_centerHorizontal="true"
            android:gravity="center|start"
            android:layout_margin="@dimen/dimension_value_10"
            android:paddingLeft="@dimen/dimension_value_10"
            android:text="Movie title here"
            android:textColor="@color/white"
            android:layout_gravity="bottom"
            android:textSize="26sp" />
      </RelativeLayout>
</android.support.v7.widget.CardView>