Как нажать кнопку при открытой клавиатуре - PullRequest
1 голос
/ 09 июля 2019

У меня есть RelativeLayout -> ScrollView -> ConstraintLayout -> EditText..Button -> / Constraint -> / ScrollView -> / RelativeLayout Когда клавиатура открыта, она нажимает только EditText, но кнопка скрыта под клавиатурой.

Что я пробовал: android: windowSoftInputMode = "AdjustResize" / AdjustPan / Nothig / StateHidden .... fistSystemWindow = true fillViewPort = true alignParentBottom после изменения ограничения на относительное расположение NestedScrollView вместо ScrollView

Ничего не работает. Я тестирую на Android 6.

<RelativeLayout 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"
    android:background="@color/white"
    tools:context=".screens.news.leave.NewsDetailActivity">

    <include
        android:id="@+id/toolbar"
        layout="@layout/toolbar" />

    <androidx.core.widget.NestedScrollView
        android:id="@+id/scrollView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/toolbar"
        android:paddingTop="@dimen/margin_large">

        <androidx.constraintlayout.widget.ConstraintLayout
                android:layout_width="match_parent"
                android:layout_height="0dp">

........
           <EditText
                android:id="@+id/commentET"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_above="@id/sendComment"
                android:layout_marginStart="@dimen/margin_medium"
                android:layout_marginTop="@dimen/margin_medium"
                android:layout_marginEnd="@dimen/margin_medium"
                android:fontFamily="@font/roboto_regular"
                android:hint="Оставить комментарий"
                android:textColor="#878787"
                android:textSize="@dimen/textsize_large"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@id/commentsRV" />

            <Button
                android:id="@+id/sendComment"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginStart="@dimen/margin_medium"
                android:layout_marginEnd="@dimen/margin_medium"
                android:layout_marginBottom="16dp"
                android:background="@drawable/button_selector"
                android:text="Оставить комментарий"
                android:textColor="@color/textWhite"
                android:visibility="visible"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@id/commentET" />
...
   </androidx.constraintlayout.widget.ConstraintLayout>
    </androidx.core.widget.NestedScrollView>
</RelativeLayout>

Как нажать кнопку над клавиатурой? PS. Отбросить относительную разметку невозможно, так как внутри нее есть некоторые виды, которые нельзя прокручивать

1 Ответ

0 голосов
/ 10 июля 2019

Я нахожу обходной путь.В onResume я добавляю слушателя в parentView слушателя измененного размера.Внутри я прокручиваю вниз до минимума, когда размер parentView изменяется

newsLeaveParentView.addOnLayoutChangeListener { v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom ->
            if (bottom < oldBottom){
                scrollView.fullScroll(ScrollView.FOCUS_DOWN);
            }
        }
...