我几个小时后遇到了大麻烦;
我有一个Recyclerview,每个项目都有几个元素。对于其中一个(lv_container),我可以降低它的高度,但不能增加它。
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的高度?
我需要你的帮助 感谢
答案 0 :(得分:0)
尝试删除此行
android:layout_alignBottom="@+id/dashboard_part_image"