如何防止视图在wrap_content中消失

时间:2016-09-01 20:07:37

标签: java android

当我的RecyclerView中的视图布局是wrap_content时,我遇到了一个问题,即我的视图正在消失。 RecyclerView是两个方向的match_parent,并使用一个膨胀下面的xml文件的LinearLayout。以下是RecyclerView的每个部分应该是什么样子: What the view should look like

以下是XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp">

    <View
        android:id="@+id/scheduleBlockColor"
        android:layout_width="15dp"
        android:layout_height="match_parent"
        android:layout_alignBottom="@+id/scheduleBlockText"
        android:background="@color/colorCougarRed" />

    <RelativeLayout
        android:id="@+id/scheduleBlockText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toEndOf="@id/scheduleBlockColor"
        android:layout_toRightOf="@id/scheduleBlockColor"
        android:paddingEnd="0dp"
        android:paddingLeft="5dp"
        android:paddingRight="0dp"
        android:paddingStart="5dp">

        <TextView
            android:id="@+id/scheduleBlockTime"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="2dp"
            android:text="@string/schedule_block_time_default"
            android:textSize="16sp" />

        <TextView
            android:id="@+id/scheduleBlockClassName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/scheduleBlockTime"
            android:ellipsize="end"
            android:padding="2dp"
            android:singleLine="true"
            android:text="@string/schedule_block_class_default"
            android:textColor="#000000"
            android:textSize="18sp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/scheduleBlockRoom"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/scheduleBlockClassName"
            android:padding="2dp"
            android:text="@string/schedule_block_room_default"
            android:textSize="16sp" />
    </RelativeLayout>

</RelativeLayout>

我的问题是,当RecyclerView加载时,如何防止彩色部分消失?如果我将上面的父RelativeLayout设置为match_parent,它可以正常工作。我试过this answer,但没有取得同样的成功

2 个答案:

答案 0 :(得分:1)

这是因为<View>上设置的高度。由于它没有内容,所以搞砸了(即使是match_parent)。由于打算使用垂直条纹,您可以将其锚定到父级的顶部和底部。你已经在底部做了这种情况(将它对齐到文本视图容器的底部),所以你只需要处理顶部锚定:

<View
    android:id="@+id/scheduleBlockColor"
    ...
    android:layout_alignParentTop="true"
    ... />

答案 1 :(得分:0)

而不是在RelativeLayout中使用layout_margin填充。