Как можно развернуть нижний лист по мере того, как пользователь вводит в SearchView - PullRequest
0 голосов
/ 08 июля 2019

Итак, у меня есть нижний лист с SearchViw наверху. Я хочу расширить нижний лист, чтобы показать результаты поиска, когда пользователь печатает, но я могу заставить его работать. Буду рад некоторому вкладу в то, что я могу делать неправильно.

Это мой нижний лист, который называется question_bottom_sheet. Я осуществляю поиск с использованием Algolia):

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:algolia="http://schemas.android.com/apk/res-auto"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="0dp"
        android:background="@android:color/transparent"
        android:clickable="true"
        android:focusable="true">

    <androidx.constraintlayout.widget.ConstraintLayout
            android:id="@+id/question_bottom_sheet"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            algolia:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"
            algolia:behavior_hideable="false"
            algolia:behavior_peekHeight="96dp"
            android:layout_marginStart="24dp"
            android:layout_marginTop="24dp"
            android:layout_marginEnd="24dp"
            android:background="@color/white"
            android:paddingTop="16dp">


        <com.algolia.instantsearch.ui.views.SearchBox
                android:id="@+id/question_bottom_sheet_input"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                algolia:layout_constraintTop_toTopOf="parent"
                algolia:layout_constraintEnd_toEndOf="parent"
                algolia:layout_constraintStart_toStartOf="parent"
                android:background="@drawable/gray_form_field_gradient"
                android:textColor="@color/gray700"
                android:textSize="15sp"
                android:fontFamily="@font/roboto"
                android:iconifiedByDefault="false"
                algolia:queryHint="@string/what_would_you_like_to_know"
                algolia:defaultQueryHint="@string/what_would_you_like_to_know"
                algolia:autofocus="false"
                algolia:submitButtonEnabled="false"
                algolia:theme="@style/AlgoliaSearchView"
                algolia:searchHintIcon="@drawable/search"
                algolia:searchIcon="@drawable/search"
                algolia:layout_constraintHorizontal_bias="1.0"
                android:elevation="1dp"/>

        <com.algolia.instantsearch.ui.views.Hits
                android:id="@+id/question_bottom_sheet_recycler"
                android:layout_width="0dp"
                android:layout_height="200dp"
                algolia:layout_constraintStart_toStartOf="parent"
                algolia:layout_constraintEnd_toEndOf="parent"algolia:layout_constraintTop_toBottomOf="@+id/question_bottom_sheet_input"
                android:layout_marginTop="24dp"
                algolia:layout_constraintBottom_toTopOf="@+id/question_bottom_sheet_ask_button"
                android:layout_marginBottom="24dp"
                algolia:itemLayout="@layout/hits_item"
                algolia:infiniteScroll="true"
                algolia:autoHideKeyboard="true"
                android:background="@color/white"/>


    </androidx.constraintlayout.widget.ConstraintLayout>

</androidx.coordinatorlayout.widget.CoordinatorLayout>

Тогда в моем фрагменте вот как я пытаюсь заставить его работать:

    val bottomSheet = question_bottom_sheet
    val mBottomSheetBehavior = BottomSheetBehavior.from(bottomSheet)

    val searchInput = question_bottom_sheet_input

    searchInput.setOnQueryTextListener(object : androidx.appcompat.widget.SearchView.OnQueryTextListener {

        override fun onQueryTextChange(newText: String): Boolean {
            if (newText.isNotEmpty()){
                mBottomSheetBehavior.state = BottomSheetBehavior.STATE_EXPANDED
            } else {
                mBottomSheetBehavior.state = BottomSheetBehavior.STATE_COLLAPSED
            }
            return true
        }

        override fun onQueryTextSubmit(query: String): Boolean {
            // task HERE
            return false
        }
    })

Но когда я печатаю и стираю, несмотря ни на что, ничего не происходит. Не уверен, что я делаю не так.

РЕДАКТИРОВАТЬ: я думаю, причина, по которой он не работает, в том, что фактический виджет Алголии имеет свои собственные операции для onQueryTextChange, поэтому он обгоняет все, что я хочу сделать. Можно ли как-нибудь реализовать что-либо подобное с помощью виджета Algolia SearchBox?

...