searchView.setIconifiedByDefault(false);
。一切都很完美(当我在活动2中按下时没有弹出任何东西)但我无法得到我想要的确切布局。有什么建议可以避免键盘弹出?
在片段1中,我有以下代码在actionBar中创建searchView
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// Inflate the options menu from XML
inflater.inflate(R.menu.homesearchbar, menu);
super.onCreateOptionsMenu(menu,inflater);
SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
searchView.setMaxWidth(Integer.MAX_VALUE);
searchView.setIconifiedByDefault(false);
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) { return false; }
@Override
public boolean onQueryTextChange(String newText) { return false; }
});
}
编辑 - homesearchbar
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_search"
android:title=""
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="always"/>
</menu>
答案 0 :(得分:1)
如果您希望隐藏键盘状态,则应在onResume()
方法中输入:这就是发生这种情况,因为每当您启动或恢复活动/片段时,您的文本字段始终会成为焦点。要停止这种方式如下:
@Override
public void onResume() {
super.onResume();
InputMethodManager inputManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(yourTextField.getWindowToken(), 0);
}
或者,如果您无法在onResume中获取搜索字段,请使用此字段:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
另一种方法是在activity标记中声明"stateHidden"
属性
在你的清单中。
您还可以在片段1中为setFocusable(false)
和searchView
设置setFocusable(true)
。这样它就不会成为焦点。以及为此你所有的学分。