Android SearchView获取ImeOptionClick或submitButton点击

时间:2016-07-13 05:07:03

标签: android

我有SearchView。这是我的代码:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu, menu);
    // Retrieve the SearchView and plug it into SearchManager
    final SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search));
    SearchManager searchManager = (SearchManager) getSystemService(SEARCH_SERVICE);

    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
    searchView.setImeOptions(EditorInfo.IME_ACTION_NEXT);
    searchView.setSubmitButtonEnabled(true);
    searchView.setOnSearchClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            System.out.println("SEARCH");
        }
    });
    return true;
}

问题1:

  

我非常好奇我如何使用我设定的ImeOptions   因为我找不到像setOnEditorActionListener这样的EditText。是   有没有办法像EditText中那样做?

问题2:

  

如果问题1不可能,那么我发现了一些叫做的财产   我可以searchView.setSubmitButtonEnabled(true);获得此按钮   点击?有点像setOnSubmitListner ??如果不是那么在哪种意义上或如何使用提交

任何建议都值得尊敬。

动机是在输入用户将单击提交按钮 imeNext 以进入下一步的整个单词之后单词 KeyBoard未关闭 .. !!

1 个答案:

答案 0 :(得分:1)

你可以这样做

  @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);

    SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
    searchMenuItem = menu.findItem(R.id.action_search);
    searchView = (SearchView) searchMenuItem.getActionView();
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));
    Log.i("TAG", "==>" + searchView.getQuery());
    searchView.setMaxWidth(570);
    searchView.setIconifiedByDefault(false);

    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {


        @Override
        public boolean onQueryTextSubmit(String query) {
            //searchView.setQuery("",false);
            searchView.clearFocus();
            adapter.getFilter().filter(query);
            searchText(query);//method for search text in that you can write your logic

            return true;

        }


    });   }

public void searchText(String text){//Write your logic here}