Android ActionBar 搜索字段

标签 android search android-actionbar

我的 ActionBar 中有一个标准搜索 EditText,通过触摸一个放大镜小图标触发。我可以使用 OnQueryTextListener 缓存用户的搜索字符串。当用户第二次触摸该图标时,我想将该字符串放回 EditText。

我正在使用 ABS(即将放弃),目标是 8-19。

我该怎么做?

最佳答案

使用普通操作栏(您必须找到 ABS 的不同变体,不确定我的回答是否完全适用于该库)。

SearchView 是一个可以在选项菜单中展开的小部件,所以我所做的是使用包含操作 View 的 XML 展开菜单:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/search_user"
        android:actionViewClass="android.widget.SearchView"
        android:icon="@drawable/magnifing_glass"
        android:showAsAction="ifRoom|collapseActionView"
        android:title="Search Users"/>

</menu>

接下来,在展开操作 View 时,设置您的监听器,并使用全局变量来保存之前的搜索。

public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.search_menu, menu);


        MenuItem search = menu.findItem(R.id.search_user);

            //Keep a global variable of this so you can set it within the next listener
            SearchView user_search = (SearchView) search.getActionView();

        user_search.setOnQueryTextListener(new OnQueryTextListener() {

            @Override
            public boolean onQueryTextSubmit(String query) {
                global_variable = query;
                return true;
            }

            @Override
            public boolean onQueryTextChange(String text) {
                return true;
            }
        });

最后,在第二个监听器中,当操作 View 展开时,将全局变量的文本设置为您之前的查询。

//This is set on the menu item
search.setOnActionExpandListener(new OnActionExpandListener() {
        @Override
        public boolean onMenuItemActionCollapse(MenuItem item) {
            // Do something when collapsed
            return true;       // Return true to collapse action view
        }
        @Override
        public boolean onMenuItemActionExpand(MenuItem item) {
            user_search.setQuery(global_variable, false);
            return true;      // Return true to expand action view
        }
    });

关于Android ActionBar 搜索字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20665334/

相关文章:

java - 用边框表示进度 Android

search - SharePoint 2013 搜索结果 Web 部件未显示所有结果

java - Actionbar Overflow 菜单未显示在 < 13 API 级别和/或使用 V7 App Compat 的顶部?

android - 如何在所有Android版本上显示支持库的ActionBar&Toolbar的影子?

java - 在 ActionBar 上方添加线条/图像

android - 如何在真实的 Android 设备上部署 Titanium 应用程序?

android - 如何向firebase的云函数传递参数

android - 如何在android中使用get方法在url中设置json数组?

algorithm - 为同类的多个查询优化算法

c++ - 如何查找 boost 图中是否存在顶点?