无法在Recycleview中更改容器的高度

时间:2018-01-10 12:03:38

标签: android android-recyclerview height containers parent-child

我几个小时后遇到了大麻烦;

我有一个Recyclerview,每个项目都有几个元素。对于其中一个(lv_container),我可以降低它的高度,但不能增加它。

请参见屏幕截图:enter image description here

xml:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="5dp"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:orientation="vertical"
    android:padding="10dp">

    <TextView
        android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/dashboard_part_medical_file_locked_title"
        android:textSize="18sp"
        android:textStyle="bold" />

    <RelativeLayout
        android:id="@+id/main_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/row_dashboard_color"
        android:orientation="horizontal"
        android:padding="10dp">

        <ImageView
            android:id="@+id/dashboard_part_image"
            android:layout_width="80dp"
            android:layout_height="95dp"
            android:layout_alignParentEnd="true"
            android:paddingBottom="20dp"
            android:paddingEnd="10dp"
            android:paddingStart="10dp"
            android:paddingTop="20dp"
            android:src="@drawable/dossier_medical" />


        <RelativeLayout
            android:id="@+id/lv_container"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/dashboard_part_image"
            android:layout_alignParentStart="true"
            android:layout_alignTop="@+id/dashboard_part_image"
            android:layout_toStartOf="@+id/dashboard_part_image"
            android:background="@android:color/white"
            android:padding="10dp">

            <ImageView
                android:id="@+id/sup"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentEnd="true"
                android:layout_centerVertical="true"
                android:src="@drawable/ic_sup" />

            <TextView
                android:id="@+id/text"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentStart="true"
                android:layout_centerVertical="true"
                android:layout_toStartOf="@id/sup"
                android:text="@string/dashboard_part_medical_file_inside" />
        </RelativeLayout>

    </RelativeLayout>
</LinearLayout>

以及查看者的代码

DisplayMetrics metrics = pContext.getResources().getDisplayMetrics();

RelativeLayout.LayoutParams lvContainerParams = (RelativeLayout.LayoutParams) lvContainer.getLayoutParams();
lvContainerParams.width = RelativeLayout.LayoutParams.WRAP_CONTENT;
lvContainerParams.height = (int) (40 * metrics.density + 20 * metrics.density);
lvContainer.setLayoutParams(lvContainerParams);

ViewGroup.LayoutParams mainContainerParams = mainContainer.getLayoutParams();
mainContainerParams.height = (int) (lvContainerParams.height + 20 * metrics.density);
mainContainer.setLayoutParams(mainContainerParams);

ViewGroup.LayoutParams params = itemView.getLayoutParams();
params.height = (int) (mainContainerParams.height + 50 * metrics.density);
itemView.setLayoutParams(params);

当我更改lvContainer(白色容器)的高度时,mainContainer的高度被很好地修改(正如您可以看到蓝色容器),但白色容器始终保持固定。但是,在调试中,高度计算得很好。 我尝试拨打lvContainer.invalidate()和/或lvContainer.requestLayout(),但没有任何变化。

错误是什么?为什么可以轻松修改item和mainContainer的高度,而不是lvContainer的高度?

我需要你的帮助 感谢

1 个答案:

答案 0 :(得分:0)

尝试删除此行

android:layout_alignBottom="@+id/dashboard_part_image"