Как исправить вложенный ScrollView при нажатии на EditText с помощью Kotlin

#android #kotlin #android-nestedscrollview

#Android #kotlin #android-вложенный scrollview

Вопрос:

У меня есть вложенный ScrollView, который содержит множество компонентов, таких как recyclerview, ViewPager… У меня есть EditText для поиска.Кроме того, панель приложений, которая содержит значок поиска.Когда я нажимаю на значок поиска, EditText опускается, а когда я нажимаю второй раз на него, он скользит вверх. Моя проблема в том, что когда я прокручиваю действие вниз, например, и когда я нажимаю на поиск EditText, действие не фиксируется, перемещается вверх и за пределы экрана. Вот main_activity.xml код :

 <LinearLayout 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/grey"
        android:fitsSystemWindows="false"
        android:orientation="vertical">

    <com.google.android.material.appbar.AppBarLayout
            android:id="@ id/appBarLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/whiteFour"
            android:paddingTop="@dimen/spacing_medium"
            android:paddingBottom="@dimen/spacing_medium"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent">

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

            <androidx.appcompat.widget.AppCompatImageView
                    android:id="@ id/searchButtonMain"
                    android:layout_width="30dp"
                    android:layout_height="28dp"
                    android:layout_marginEnd="@dimen/spacing_middle"
                    android:adjustViewBounds="true"
                    android:tint="@color/black"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintEnd_toStartOf="@ id/Chart"
                    app:layout_constraintTop_toTopOf="parent"
                    app:srcCompat="@drawable/ic_search" />
           <.....>


        </androidx.constraintlayout.widget.ConstraintLayout>

    </com.google.android.material.appbar.AppBarLayout>

    <LinearLayout
            android:id="@ id/lytSearchView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/whiteFour"
            android:visibility="gone"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.0">

        <com.google.android.material.textfield.TextInputEditText
                android:id="@ id/searchFields"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginStart="20dp"
                android:layout_marginTop="10dp"
                android:layout_marginEnd="20dp"
                android:layout_marginBottom="10dp"
                android:background="@drawable/border"
                android:drawableStart="@drawable/icn_search_x"
                android:drawablePadding="@dimen/spacing_large"
                android:fontFamily="@font/cairo"
                android:gravity="left"
                android:hint="@string/search_product"
                android:inputType="text"
                android:lineHeight="18dp"
                android:maxLines="1"
                android:paddingStart="15dp"
                android:paddingTop="5dp"
                android:paddingEnd="15dp"
                android:paddingBottom="5dp"
                android:textColorHint="@color/greyish"
                android:textSize="14sp"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.0"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintVertical_bias="0.0" />


    </LinearLayout>


    <androidx.core.widget.NestedScrollView
            android:id="@ id/nestedScrollView2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/grey"
            android:clipToPadding="true"
            android:fillViewport="true"
            android:scrollbars="none"
            android:scrollingCache="true"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@ id/appBarLayout">
<................> 
  

Когда я нажимаю на кнопку поиска :

  searchButtonMain.setOnClickListener {
            if (firstClickSearch) {
                val animation = AnimationUtils.loadAnimation(
                    this, R.anim.slide_up
                )
                 //appending animation to textView
                lytSearchView.startAnimation(animation)
                lytSearchView.visibility = View.GONE
                firstClickSearch = false
            } else {
                 val animation = AnimationUtils.loadAnimation(
                    this, R.anim.slide_down
                )

                //appending animation to textView
                lytSearchView.startAnimation(animation)
                lytSearchView.visibility = View.VISIBLE
                firstClickSearch = true
            }

      
        }
  

Итак, что я должен сделать, чтобы исправить вложенный ScrollView при нажатии на поиск EditText с помощью Kotlin

Комментарии:

1. То, что вы ищете, вызывается android:windowSoftInputMode в файле манифеста для вашего тега активности. Попробуйте использовать adjustNothing или adjustPan . Исходя из вопроса, я не уверен, каково ваше ожидаемое поведение, но это поможет.

2. Нет, у меня все та же ошибка. Когда я нажимаю на значок поиска в панели приложений, текст редактирования перемещается вниз, когда текст редактирования перемещается вниз, все вложенные ScrollView перемещаются вниз, а когда я нажимаю второй раз на значок поиска, текст редактирования перемещается вверх, а все вложенные ScrollView перемещаются вверх, я хочу исправить вложенный ScrollView