我有一个RecyclerView视图,显示一个项目列表。页面顶部是一个操作栏,底部是一个用于输入文本的LinearLayout和一个带有列表项目区域的按钮(单击时展开)中间。我试图将RecyclerView高度的大小限制为剩余的可用高度(在工具栏下方和线性布局上方)。
不幸的是,顶部和底部的项目似乎都位于底部的工具栏和布局下,无法看到。我设法通过添加android:paddingTop="?attr/actionBarSize
来欺骗顶部,但我知道这不是正确的方法。滚动工作正常。
我无法理解为什么即使设置了约束也会发生这种情况?如何将Recyclerview限制在内部区域?
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="kevcon.ie.cloaked.SendMessage">
<!-- Might remove to suit api level-->
<android.support.v7.widget.Toolbar
android:id="@+id/my_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
<android.support.v7.widget.RecyclerView
android:paddingTop="?attr/actionBarSize"
android:id="@+id/recycler_view_inbox_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/my_toolbar"
app:layout_constraintBottom_toTopOf="@id/layout_chatbox"
/>
<View
android:layout_width="0dp"
android:layout_height="2dp"
android:background="@color/colorLightGrey"
android:layout_marginBottom="0dp"
app:layout_constraintBottom_toTopOf="@+id/layout_chatbox"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/my_toolbar" />
<LinearLayout
android:id="@+id/layout_chatbox"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:minHeight="48dp"
android:background="@color/colorLightGrey"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintLeft_toLeftOf="parent">
<EditText
android:id="@+id/edit_message"
android:hint="@string/send_message_hint"
android:background="@android:color/transparent"
android:layout_gravity="center"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:maxLines="6" />
<Button
android:id="@+id/button_sms_send"
android:layout_width="64dp"
android:layout_height="48dp"
android:layout_gravity="bottom"
android:background="@color/colorAccent"
android:clickable="true"
android:focusable="true"
android:gravity="center"
android:text="@string/send_button_text"
android:textSize="14sp"
/>
</LinearLayout>
答案 0 :(得分:1)
请尝试如下
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<!-- Might remove to suit api level-->
<android.support.v7.widget.Toolbar
android:id="@+id/my_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view_inbox_list"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@id/mView"
app:layout_constraintTop_toBottomOf="@id/my_toolbar"
/>
<View
android:id="@+id/mView"
android:layout_width="0dp"
android:layout_height="2dp"
android:layout_marginBottom="0dp"
android:background="@color/colorDarkGray"
app:layout_constraintBottom_toTopOf="@+id/layout_chatbox"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
/>
<LinearLayout
android:id="@+id/layout_chatbox"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@color/colorDarkGray"
android:minHeight="48dp"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent">
<EditText
android:id="@+id/edit_message"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_gravity="center"
android:background="@android:color/transparent"
android:hint="@string/terms_service"
android:maxLines="6"/>
<Button
android:id="@+id/button_sms_send"
android:layout_width="64dp"
android:layout_height="48dp"
android:layout_gravity="bottom"
android:background="@color/colorAccent"
android:clickable="true"
android:focusable="true"
android:gravity="center"
android:text="@string/send"
android:textSize="14sp"
/>
</LinearLayout>