Итак, у меня есть нижний лист с 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
?