【问题标题】:Android - Actionbar with Search Filter and setting iconAndroid - 带有搜索过滤器和设置图标的操作栏
【发布时间】:2015-04-29 06:39:12
【问题描述】:

我正在尝试使用操作栏来实现我的操作栏。
我有两个操作按钮,其中一个是搜索按钮,第二个是设置按钮。

我已经实现了一个设置按钮,但是我不能实现一个搜索视图。

我该如何实现?
您对我如何实现这一点有任何想法吗?

【问题讨论】:

标签: android android-actionbar actionbarsherlock searchview


【解决方案1】:

第一步你要准备search_menu.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
             xmlns:app="http://schemas.android.com/apk/res-auto">
<item
        android:id="@+id/action_search"
        android:icon="@android:drawable/ic_menu_search"
        app:showAsAction="ifRoom"
        app:actionViewClass="android.support.v7.widget.SearchView"
        android:title="Search"/>

  ... your others menu items
</menu>

在下一步中,您必须在您的FragmentActivity 中使用此菜单,并为您的SearchView 设置OnQueryTextListener,如下面的代码所示:

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.search_menu, menu);

    final SearchView search = (SearchView) menu.findItem(R.id.action_search).getActionView();
    search.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String s) {
            return false;
        }

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

如果你想在片段中使用菜单,请记住setHasOptionsMenu(true); 方法。

如果您想自定义您的SearchView,您必须为此创建自己的样式,如下面的代码所示:

<style name="CustomAppTheme" parent="Theme.AppCompat">
    <item name="searchViewStyle">@style/CustomSearchViewStyle
    </item>
</style>
<style name="CustomSearchViewStyle" parent="Widget.AppCompat.SearchView">
    <!-- Background for the search query section (e.g. EditText) -->
    <item name="queryBackground">...</item>
    <!-- Background for the actions section (e.g. voice, submit) -->
    <item name="submitBackground">...</item>
    <!-- Close button icon -->
    <item name="closeIcon">...</item>
    <!-- Search button icon -->
    <item name="searchIcon">...</item>
    <!-- Go/commit button icon -->
    <item name="goIcon">...</item>
    <!-- Voice search button icon -->
    <item name="voiceIcon">...</item>
    <!-- Commit icon shown in the query suggestion row -->
    <item name="commitIcon">...</item>
    <!-- Layout for query suggestion rows -->
    <item name="suggestionRowLayout">...</item>
</style>

示例SearchView 中获取EditText 的旧样式

<style name="CustomAppTheme" parent="Theme.AppCompat">
    <item name="searchViewStyle">@style/CustomSearchViewStyle
    </item>
</style>
<style name="CustomSearchViewStyle" parent="Widget.AppCompat.SearchView">
    <item name="queryBackground">@android:drawable/editbox_background_normal</item>
</style>

记得在 AndroidManifest 中为你的 Activity 设置这个样式:

    <activity
        android:name=".YourActivity"
        android:theme="@style/CustomAppTheme"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-14
    • 2015-01-31
    • 2021-11-04
    • 2016-01-04
    • 2016-11-05
    • 2016-04-21
    • 1970-01-01
    相关资源
    最近更新 更多