如何在我的活动中添加搜索栏,以搜索线性布局中的按钮列表?

时间:2018-01-20 17:35:16

标签: android search searchview

我想添加一个搜索栏,以便用户可以搜索按钮列表以更快地找到他们想要的内容。 我在滚动视图(垂直)内的线性布局中有大约15个按钮。 我希望结果显示为垂直线中的几个按钮。搜索网络后,我无法回答我的问题。提前谢谢。

XML:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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"
    tools:context="com.example.boys.fishkeeper.Categories">

    <ScrollView
        android:id="@+id/categoryScrollView"
        style="@android:style/Widget.DeviceDefault.ScrollView"
        android:layout_width="330dp"
        android:layout_height="457dp"
        android:layout_marginBottom="4dp"
        android:layout_marginEnd="4dp"
        android:layout_marginStart="4dp"
        android:layout_marginTop="4dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <Button
                android:id="@+id/barbsButton"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Barbs"
                android:textSize="24sp"
                tools:background="@color/searchColor" />

            <Button
                android:id="@+id/tetrasButton"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Tetras"
                android:textSize="24sp"
                tools:background="@color/searchColor" />

            <Button
                android:id="@+id/livebearersButton"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Livebearers"
                android:textSize="24sp"
                tools:background="@color/searchColor" />

            <Button
                android:id="@+id/gouramisButton"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Gouramis"
                android:textSize="24sp"
                tools:background="@color/searchColor" />

            <Button
                android:id="@+id/cichlidsButton"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Cichlids"
                android:textSize="24sp"
                tools:background="@color/searchColor" />

            <Button
                android:id="@+id/bettaButton"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Betta"
                android:textSize="24sp"
                tools:background="@color/searchColor" />

            <Button
                android:id="@+id/rasborasButton"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Rasboras"
                android:textSize="24sp"
                tools:background="@color/searchColor" />

            <Button
                android:id="@+id/daniosButton"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Danios"
                android:textSize="24sp"
                tools:background="@color/searchColor" />

            <Button
                android:id="@+id/snakeheadsButton"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Snakeheads"
                android:textSize="24sp"
                tools:background="@color/searchColor" />

            <Button
                android:id="@+id/mormyridsButton"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Mormyrids"
                android:textSize="24sp"
                tools:background="@color/searchColor" />

            <Button
                android:id="@+id/catfishButton"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Catfish"
                android:textSize="24sp"
                tools:background="@color/searchColor" />

            <Button
                android:id="@+id/knifefishButton"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="KnifeFish"
                android:textSize="24sp"
                tools:background="@color/searchColor" />

            <Button
                android:id="@+id/loachesButton"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Loaches"
                android:textSize="24sp"
                tools:background="@color/searchColor" />

            <Button
                android:id="@+id/pufferfishButton"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Pufferfish"
                android:textSize="24sp"
                tools:background="@color/searchColor" />

            <Button
                android:id="@+id/plecsButton"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Plecs"
                android:textSize="24sp"
                tools:background="@color/searchColor" />

        </LinearLayout>
    </ScrollView>


</android.support.constraint.ConstraintLayout>

1 个答案:

答案 0 :(得分:0)

首先将id设置为您的LinearLayout,然后在您的活动中使用findViewById(),然后创建方法以识别哪个按钮可见

public void filter(String seaarchText) {
   for (int i = 0;i < linLay.getChildCount();i++) {
       Button button = linLay.getChildAt(i);
       if (button.getText().toString().contains(searchText)) {
           button.setVisibility(View.Visible);
       } else 
           button.setVisibility(View.GONE);
   }
}