当用户在SearchView中键入内容时,如何展开底页

时间:2019-07-08 03:51:54

标签: android searchview algolia bottom-sheet

因此,我有一个底部页面,顶部是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小部件来实现类似的功能吗?

0 个答案:

没有答案