Android 处理物理键盘';s在SearchView中输入键
我已经在我的应用程序中实现了一个SearchView,当我在使用软键盘(使用)时按下搜索按钮时,它可以正常工作: 现在我计划使用物理键盘让我的用户能够使用应用程序,但我不知道如何从物理键盘触发搜索事件(onQueryTextChange不会被该键调用)。在Android Studio中运行模拟器时也会发生同样的情况。我试过:Android 处理物理键盘';s在SearchView中输入键,android,searchview,Android,Searchview,我已经在我的应用程序中实现了一个SearchView,当我在使用软键盘(使用)时按下搜索按钮时,它可以正常工作: 现在我计划使用物理键盘让我的用户能够使用应用程序,但我不知道如何从物理键盘触发搜索事件(onQueryTextChange不会被该键调用)。在Android Studio中运行模拟器时也会发生同样的情况。我试过: viewHolder.mTextSearch.setOnKeyListener(new View.OnKeyListener() { @Override
viewHolder.mTextSearch.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View view, int i, KeyEvent keyEvent) {
Log.d(TAG, "Query: " + keyEvent);
return false;
}
});
但是SearchView似乎忽略了任何键的侦听器。。。似乎QueryTextListener是处理搜索的唯一方法,但是如何处理特殊字符呢?我应该换成更灵活的吗
有什么想法吗?在布局中设置要搜索的输入法选项
<EditText
android:imeOptions="actionSearch"
android:inputType="text" />
})) 我就是这样处理的:
//Grab de EditText from the SearchView
EditText editText = (EditText) viewHolder.mTextSearch
.findViewById(android.support.v7.appcompat.R.id.search_src_text);
editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int keyAction, KeyEvent keyEvent) {
if (
//Soft keyboard search
keyAction == EditorInfo.IME_ACTION_SEARCH ||
//Physical keyboard enter key
(keyEvent != null && KeyEvent.KEYCODE_ENTER == keyEvent.getKeyCode()
&& keyEvent.getAction() == KeyEvent.ACTION_DOWN)) {
new SearchForEquipmentTask(false, viewHolder.mTextSearch
.getQuery().toString()).execute();
return true;
}
return false;
}
});
谢谢你的帮助
另请参见:
viewHolder.mTextSearch.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
performSearch();
return true;
}
return false;
}
//Grab de EditText from the SearchView
EditText editText = (EditText) viewHolder.mTextSearch
.findViewById(android.support.v7.appcompat.R.id.search_src_text);
editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int keyAction, KeyEvent keyEvent) {
if (
//Soft keyboard search
keyAction == EditorInfo.IME_ACTION_SEARCH ||
//Physical keyboard enter key
(keyEvent != null && KeyEvent.KEYCODE_ENTER == keyEvent.getKeyCode()
&& keyEvent.getAction() == KeyEvent.ACTION_DOWN)) {
new SearchForEquipmentTask(false, viewHolder.mTextSearch
.getQuery().toString()).execute();
return true;
}
return false;
}
});