如何在Actionbar中为搜索视图创建EditText,例如Android中的Google Play搜索

问题描述 投票:-1回答:1

我想创建一个EditText来输入文本供用户搜索。此搜索应位于操作栏的顶部。我想在Google Play商店中显示搜索视图。我添加了下面的代码,它不能正确显示。你能帮我吗?

  <com.google.android.material.appbar.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:fitsSystemWindows="true"
    android:theme="@style/AppTheme.AppBarOverlay"
    app:elevation="2dp">

    <com.google.android.material.appbar.MaterialToolbar
        android:id="@+id/search_toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fitsSystemWindows="true"
        app:popupTheme="@style/AppTheme.PopupOverlay"
        app:theme="@style/ThemeOverlay.MaterialComponents.Light">

        <EditText
            android:id="@+id/search_query"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginRight="8dp"
            android:background="@drawable/edittext_rounded"
            android:fitsSystemWindows="true"
            android:hint="Search for news"
            android:imeOptions="actionDone"
            android:inputType="text"
            android:singleLine="true"
            android:textColor="@android:color/black"
            android:textCursorDrawable="@android:color/black"
            android:textSize="18sp" />

    </com.google.android.material.appbar.MaterialToolbar>
</com.google.android.material.appbar.AppBarLayout>
android search android-toolbar
1个回答
0
投票

我强烈建议您迁移到AndroidX,以便可以使用一些很棒的库,例如CoordinatoryLayout。

但是在这种情况下,您可以在XML布局中直接使用SearchView小部件。

<android.support.v7.widget.SearchView
            android:id="@+id/search_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:queryBackground="@android:color/transparent"
            app:queryHint="Google"
            app:iconifiedByDefault="false"/>

并且在您的活动中添加此文本。

searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener(){
            @Override
            public boolean onQueryTextSubmit(String query){
                // sample
                textView.setText(query);
                return false;
            }

            @Override
            public boolean onQueryTextChange(String newText){
                return false;
            }
        });

最后,在您的MaterialToolbar身高将android:layout_height="wrap_content"更改为android:layout_height="?attr/actionBarSize"

© www.soinside.com 2019 - 2024. All rights reserved.