当“回收者”视图中的项目为3或4时,此代码可以正常工作。当“回收者”视图中的项目大于4时,编辑文本字段就会退出屏幕。就像图像https://imgur.com/gallery/8hLnnrG > 如果在recyclerview中有多个项目,则
EditText不应位于“底部对齐”按钮下方。我该如何实现? https://imgur.com/gallery/nwUi8ye
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/colorWhitex"
tools:context=".Fragments.RecordOdometerFragments.RecordOdometer">
<!-- TODO: Update blank fragment layout -->
<RelativeLayout
android:id="@+id/linear"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/layout">
<android.support.v7.widget.RecyclerView
android:id="@+id/car_selection_rv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:descendantFocusability="beforeDescendants"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="16dp"/>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/odometer_view"
android:layout_below="@+id/car_selection_rv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginTop="16dp"
android:background="@drawable/edittext_red_corners">
<EditText
android:id="@+id/odometer_edittext"
android:layout_height="35dp"
android:layout_width="fill_parent"
android:inputType="number"
android:layout_margin="1dp"
android:paddingEnd="64dp"
android:maxLines="9"
android:imeOptions="actionDone"
android:hint="Input meter reading"
android:background="@null"
android:paddingStart="16dp" />
<ImageButton
android:id="@+id/imageButton1"
android:layout_width="32dp"
android:layout_height="32dp"
android:clickable="true"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:background="?attr/selectableItemBackgroundBorderless"
android:src="@drawable/ic_mic_none_black_24dp"/>
<ImageButton
android:id="@+id/imageButton2"
android:layout_width="32dp"
android:layout_height="32dp"
android:clickable="true"
android:layout_toLeftOf="@+id/imageButton1"
android:layout_centerVertical="true"
android:src="@drawable/ic_photo_camera_black_24dp"
android:background="?attr/selectableItemBackgroundBorderless" />
</RelativeLayout>
</RelativeLayout>
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_margin="32dp"
android:layout_alignParentBottom="true"
android:background="@drawable/button_corner_radius"
style="@style/Widget.AppCompat.CompoundButton.RadioButton"
android:gravity="center"
android:text="Done"
android:textAllCaps="false"
android:textColor="@color/colorWhite" />
</RelativeLayout>
答案 0 :(得分:1)
我强烈建议您使用ConstraintLayout。您可以相对轻松地创建复杂的布局,而不必嵌套多个布局。
答案 1 :(得分:0)
推荐的方法是使用ConstraintLayout并防止RecyclerView推出odometer_view
,探索类似How to set RecyclerView Max Height的东西
但是请注意您的更新要求,您仍然可以在此处使用一些富有创意的 padding 对其进行破解。既然您似乎知道odometer_view
的高度,则根据其内容@ 35dp
+ 2x 16dp
,可以为RecyclerView设置相同的底部填充,然后将其对齐在一起。
(我已经删除了多余的代码)
<RelativeLayout
android:id="@+id/linear"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_above="@id/button" >
<android.support.v7.widget.RecyclerView
android:id="@+id/car_selection_rv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="67dp" />
<RelativeLayout
android:id="@+id/odometer_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/car_selection_rv" >
<EditText
android:id="@+id/odometer_edittext"
android:layout_height="35dp"
android:layout_width="fill_parent" />
<ImageButton
android:id="@+id/imageButton1"
android:layout_width="32dp"
android:layout_height="32dp" />
<ImageButton
android:id="@+id/imageButton2"
android:layout_width="32dp"
android:layout_height="32dp" />
</RelativeLayout>
</RelativeLayout>
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_alignParentBottom="true" />
</RelativeLayout>
所以实际上只有两项:
android:paddingBottom="67dp"
android:layout_alignBottom="@id/car_selection_rv"
现在,无论您走到哪里,odometer_view
基本上都会漂浮在您的recyclerview的底部填充上方。