【问题标题】:Android CardView containing ImageView and TextView issueAndroid CardView 包含 ImageView 和 TextView 问题
【发布时间】:2018-01-02 00:30:28
【问题描述】:

我创建了一个项目 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>


这里是更明确的设计图片:

【问题讨论】:

标签: android textview imageview overlay cardview


【解决方案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>

【讨论】:

    【解决方案2】:

    CardView 真的只意味着有一个孩子。您应该将您的 ImageViewTextView 包裹在 FrameLayout 之类的东西中,并使其成为 CardView 子级。

    【讨论】:

      【解决方案3】:

      您可以在 CardView 中使用 Vertical 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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-26
        • 1970-01-01
        • 2021-11-26
        • 1970-01-01
        • 2010-12-28
        • 1970-01-01
        相关资源
        最近更新 更多