因此,我有一个底部页面,顶部是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
}
})
但是当我键入并擦除时,无论如何,什么都不会发生。不知道我在做什么错。
编辑:我认为它不起作用的原因是因为Algolia的实际小部件对onQueryTextChange
具有其自己的操作,因此它超过了我想要做的任何事情。我可以通过Algolia的SearchBox
小部件来实现类似的功能吗?