您好我需要在searchView中放置一些文本并关注/展开searchView小部件.
这是我尝试但它不起作用
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
...
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
searchView.setQuery(this.filtro, false);
searchView.setFocusable(true);
searchView.requestFocus();
searchView.requestFocusFromTouch();
Run Code Online (Sandbox Code Playgroud) 当我从另一个活动返回到主活动时,searchView获得焦点并且键盘打开,我设法通过使用以下方式阻止键盘打开:
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Run Code Online (Sandbox Code Playgroud)
但这还不够,如果打开并关闭操作栏下拉菜单,键盘会重新出现,因为searchView仍然具有焦点(记住我只关闭了键盘).我试图获得对searchView的引用并使其失去焦点,但这并没有奏效.
所以基本上,我只是希望searchView永远不会有焦点或提示键盘打开,除非实际触摸了searchView文本区域.
我们在ActionBar上有一个SearchView,它被设置为非图标化.由于我们在视图中没有任何内容直到用户输入要搜索的内容,因此将SearchView初始焦点放在一边是有意义的,并确保软键盘显示为用户输入文本做好准备 - 否则他们'我总是必须先在SearchView中点击.
我可以通过调用来给予SearchView焦点
searchView.requestFocus();
Run Code Online (Sandbox Code Playgroud)
但我不能让软键盘出现.在我们的另一个片段中,我有一个我们想要聚焦的EditText我可以通过调用让软键盘出现在那里
InputMethodManager mgr = (InputMethodManager)getActivity().getSystemService(
Context.INPUT_METHOD_SERVICE);
mgr.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
Run Code Online (Sandbox Code Playgroud)
但这只是在SearchView上不起作用.必须有可能让它发挥作用.
当我从ActionBar激活搜索时,我看到这个问题集中在SearchView EditText上.但是,当它获得焦点时键盘不会出现.不应该,因为它只是一个普通的EditText?(这是一个普通的EditText吗?)这种行为在Android SDK 11级上可见.(三星Galax Tab 7.7与Android股票.)
我现在有一个解决方法,它挂钩onOptionsItemSelected(MenuItem item)我的Activity 的方法,显示键盘.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
boolean menuSelectionHandeled = super.onOptionsItemSelected(item);
// menu_search is the id of the menu item in the ActionBar
if (item.getItemId() == R.id.menu_search) {
mInputManager.showSoftInput(null, InputMethodManager.SHOW_IMPLICIT);
}
return menuSelectionHandeled;
}
Run Code Online (Sandbox Code Playgroud)
在哪里mInputManager的实例InputMethodManager.
ActionBar是用ActionBarSherlock构建的,因为目标设备是Android 3.x,这可能是症状的原因吗?根据ActionBarSherlock的常见问题解答:
Android 3.x(也称为Honeycomb)上的操作栏未实现Android 4.x(Ice Cream Sandwich)中的所有功能.为了在所有平台上提供完整的操作栏API以及统一所有Android版本的样式,使用自定义实现.