SearchView监听IME动作

问题描述 投票:2回答:2

我如何监听SearchView上的IME操作?由于它不是EditText的子类。

我想做的是在用户按下键盘上的“ enter”键时进行处理并且没有输入文本。

没有文本的问题是,OnQueryTextListener.onQueryTextSubmit()仅在用户输入文本时才触发。

android searchview
2个回答
4
投票

如何获取searchview的EditText并使用OnEditorAction?

final SearchView searchView = (SearchView) findViewById(R.id.searchView);
int searchViewPlateId = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
EditText searchPlateEditText = (EditText) searchView.findViewById(searchViewPlateId);
searchPlateEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {

        if (actionId == EditorInfo.IME_ACTION_SEARCH) {
            if(!TextUtils.isEmpty(v.getText().toString())){
                //Text entered
            }
            else {
                //no string
            }
        }
        return true;
    }

});

1
投票

使用androidx.appcompat.widget.SearchView,您可以使用:

setOnQueryTextListener(object : SearchView.OnQueryTextListener {
    override fun onQueryTextSubmit(query: String): Boolean {
         return true
    }

    override fun onQueryTextChange(newText: String): Boolean {
         return true
    }
})
© www.soinside.com 2019 - 2024. All rights reserved.