我使用com.android.support:recyclerview-v7:23.2.1
并使用该版本,可以在WRAP_CONTENT
高度使用RecyclerView
。我现在有以下布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:importantForAccessibility="no">
<android.support.v7.widget.RecyclerView
android:id="@+id/message_list_row_parent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/message_list_message_divider"
android:layout_alignParentTop="true"
android:clipToPadding="false"
android:divider="@null"
android:importantForAccessibility="no"
android:listSelector="@android:color/transparent"
android:padding="10dp"
android:textColor="@color/textcolorprimary" />
<View
android:id="@+id/message_list_message_divider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_above="@+id/message_list_layout_message"
android:layout_gravity="center"
android:background="@android:color/darker_gray"
android:importantForAccessibility="no" />
<RelativeLayout
android:id="@+id/message_list_layout_message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginEnd="20dp"
android:layout_marginStart="20dp"
android:importantForAccessibility="no"
android:orientation="horizontal">
<EditText
android:id="@+id/message_list_edittext_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_marginEnd="10dp"
android:layout_toStartOf="@+id/message_list_button_send"
android:background="@color/transparent"
android:hint="@string/message_input"
android:inputType="textMultiLine"
android:maxLines="10"
android:minLines="3"
android:paddingBottom="5dp"
android:paddingTop="5dp"
android:textColor="@color/primaryColor"
android:textSize="16sp" />
<ImageButton
android:id="@+id/message_list_button_send"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_gravity="center"
android:background="@null"
android:contentDescription="@string/content_description_image_send"
android:gravity="center"
android:scaleType="fitXY"
android:src="@drawable/custom_button_send" />
</RelativeLayout>
</RelativeLayout>
Android Studio中的预览显示正确的布局,并在插入虚拟线View i上方RecyclerView
。我需要这种布局,因为内部RelativeLayout
的{{1}}可以在高度上增长(如果EditText
的高度增加了3行,那么{{1} })。
当我在手机上安装它时出现问题。 EditText
不在我定义的视图之上。它填满了设备的整个高度。所以我的recylcerview的最后一行总是在相对布局的后面。
为什么?我该如何解决?我需要RecyclerView始终保持在我的分隔线上方,并在相对布局高度增加时缩小高度。
修改我想提供一些屏幕截图来向您展示问题。第一个屏幕截图显示了我与当前布局的聊天:
但缺少一个项目,因为滚动高度大于布局定义。我向下滚动后可以看到丢失的项目:
当我现在(只是为了找到问题的根源)从RelativeLayout
移除RecylcerView
并将其高度设置为300dp时,高度的变化得到正确的尊重:
但正如你可以看到现在缺少几个项目,因为它们隐藏在视野之外(是的......即使我在初始化后以编程方式滚动到底部)。为了表明所有元素都在那里:
所以高度得到正确设置......但是最后一个元素没有出现,直到我手动向下滚动。以编程方式滚动没有效果。
答案 0 :(得分:1)
将其添加到RelativeLayout,其中包含EditText layout_below="@+id/message_list_message_divider"
。并删除分隔符上的layout_above
答案 1 :(得分:0)
我修复了一个类似的问题,将您想要的元素放在顶部作为父布局的最后一个子节点,或者尝试将android:translationZ="1dp"
放入recyclerview。