有没有办法避免全屏搜索视图/键盘在横向?
2022-09-03 17:58:10
我试图避免在横向上进行全屏键盘编辑,以便访问建议。
我已经阅读了很多线程,解释我必须添加EditorInfo标志,如flagNoFullscreen和/或flagNoExtractUi。
我以编程方式添加了它们,但并没有真正的帮助。
有没有办法解决这个问题?
我试图避免在横向上进行全屏键盘编辑,以便访问建议。
我已经阅读了很多线程,解释我必须添加EditorInfo标志,如flagNoFullscreen和/或flagNoExtractUi。
我以编程方式添加了它们,但并没有真正的帮助。
有没有办法解决这个问题?
我花了一段时间才弄清楚这个问题,但实际上它很简单。
最初,我创建了一个扩展 SearchView 类的自定义类,并使用了重写,但是我无法让它以这种方式工作。onCreateInputConnection()
我最终以更简单的方式让它工作,只增加了两行代码。
您只需要调用以获取当前配置,然后“或”结果,并调用:search.getImeOptions()
EditorInfo.IME_FLAG_NO_EXTRACT_UI
setImeOptions()
爪哇岛:
search.setImeOptions(options|EditorInfo.IME_FLAG_NO_EXTRACT_UI);
Kotlin:
search.setImeOptions(search.imeOptions or EditorInfo.IME_FLAG_NO_EXTRACT_UI)
如果您没有使用现有选项进行“或”,则不会在右下角获得“搜索”完成按钮,而只会获得“完成”按钮。
以下是我用于测试的完整重写(我在 xml 中使用了 SearchView,但即使您没有从 xml 扩充 SearchView,此解决方案也应该适合您):onCreateOptionsMenu()
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
SearchManager manager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView search = (SearchView) menu.findItem(R.id.action_search).getActionView();
SearchableInfo si = manager.getSearchableInfo(getComponentName());
//Here is where the magic happens:
int options = search.getImeOptions();
search.setImeOptions(options|EditorInfo.IME_FLAG_NO_EXTRACT_UI);
//!!!!!!!!!!!
search.setSearchableInfo(si);
search.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String query) {
return true;
}
});
return true;
}
以下是我在menu_main.xml中用于 SearchView 的 xml:
<item android:id="@+id/action_search"
android:title="Search"
android:icon="@android:drawable/ic_menu_search"
app:showAsAction="always"
app:actionViewClass="android.support.v7.widget.SearchView"
/>
结果不调用 :setImeOptions()
调用的结果:setImeOptions()
代码的另一种替代方法是在 searchView xml 中添加该属性,这对于小于 16 的 API 很有用:
<SearchView
android:imeOptions="flagNoExtractUi" />