Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何允许android选择搜索字段_Android - Fatal编程技术网

如何允许android选择搜索字段

如何允许android选择搜索字段,android,Android,是否有方法允许用户选择执行搜索的字段 当用户单击搜索图标时,我打开搜索小部件并允许用户输入文本。目前,我使用文本搜索两个字段(名称和地区),但我希望允许用户选择其中一个 我希望有一个下拉列表,其中包含用户从搜索窗口小部件中打开的字段名,可能带有一个小箭头,就像在Android Studio中显示过去的搜索字符串一样 代码 public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.men

是否有方法允许用户选择执行搜索的字段

当用户单击搜索图标时,我打开搜索小部件并允许用户输入文本。目前,我使用文本搜索两个字段(名称和地区),但我希望允许用户选择其中一个

我希望有一个下拉列表,其中包含用户从搜索窗口小部件中打开的字段名,可能带有一个小箭头,就像在Android Studio中显示过去的搜索字符串一样

代码

public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main, menu);
    // Associate searchable configuration with the SearchView
    searchItem = menu.findItem(R.id.action_search);
    mSearchView = (SearchView) MenuItemCompat.getActionView(searchItem);
    if (mSearchView != null) {
            TextView searchText = ((EditText) mSearchView.findViewById(android.support.v7.appcompat.R.id.search_src_text));
            if (searchText != null) {
                searchText.setTextColor(Color.BLACK);
                searchText.setHintTextColor(Color.GRAY);
            }
            ImageView searchCloseIcon = (ImageView) mSearchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn);
            int r = getResources().getIdentifier("drawable/close", null, getPackageName());
            if (r > 0)
                searchCloseIcon.setImageResource(r); //R.drawable.abc_ic_clear_normal);
            try {
                Field searchField = SearchView.class.getDeclaredField("mSearchPlate");
                searchField.setAccessible(true);
                LinearLayout searchPlate = (LinearLayout) searchField.get(mSearchView);
                if (searchPlate != null) {
                    searchPlate.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.bgcolor));
                }
            } catch (NoSuchFieldException e) {
                MySingleton.printMyLog(0, "in MainActivity.SearchView.NoSuchFieldException [" + e.getMessage() + "]");
            } catch (IllegalAccessException e) {
                MySingleton.printMyLog(0, "in MainActivity.SearchView.IllegalAccessException [" + e.getMessage() + "]");
            }

            mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
                @Override
                public boolean onQueryTextSubmit(String query) {
                    MenuItemCompat.collapseActionView(searchItem);
                    mSearchView.clearFocus();
                    mSearchView.setIconified(true);
                    mSearchView.onActionViewCollapsed();
                    mSearchView.setQuery("", false);
                    return false;
                }

                @Override
                public boolean onQueryTextChange(String newText) {
  // do my stuff
                    return false;
                }
            });
        }
    }

    return (super.onCreateOptionsMenu(menu));
}
编辑2

我添加了以下代码,以捕获对搜索图标的单击,但没有调用onClick()

            mSearchView.setOnSearchClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
 // my stuff - maybe to display a dialog box to ask the user the field to search on
                }
            });

您可以使用一个或一个库(),这将大大简化它。

当用户单击setOnSearchClickListener()的onClick()内的搜索图标时,可以打开一个对话框来完成此操作

看起来你需要的是我在使用searchView,但我没有看到这样的选项存在。你每天都在学习。你能说得更具体一点吗?那是什么选项?安卓小部件可能非常适合你的使用案例。我没有亲自使用过它,你可能会在网上找到很多使用它的教程。我使用的是searchView,但我没有看到这样的选项存在