Как добавить обзор рециркулятора с помощью Edittext и кнопки, выровненной по нижнему краю? - PullRequest
0 голосов
/ 24 января 2019

Этот код работает нормально, когда элементы в представлении переработчика равны 3 или 4. Если элементы в представлении переработчика больше 4, текстовое поле редактирования исчезает с экрана. Как на изображении https://imgur.com/gallery/8hLnnrG

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>

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Рекомендуется использовать ConstraintLayout и, чтобы RecyclerView не выдвигал odometer_view, изучите что-то вроде Как установить RecyclerView Max Height

Но, принимая во внимание ваше обновленное требование, вы все равно можете взломать его с помощью креативного отступа здесь. Поскольку кажется, что вы знаете высоту вашего 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>

Так что на самом деле всего два пункта:

  1. android:paddingBottom="67dp"
  2. android:layout_alignBottom="@id/car_selection_rv"

Теперь ваш odometer_view будет по существу всплывать над нижним отступом вашего рециркулятора, куда бы он ни шел.

0 голосов
/ 24 января 2019

Я настоятельно рекомендую использовать ConstraintLayout .Вы можете создавать сложные макеты относительно легко, не вкладывая несколько макетов.

...