TabHost 选项卡更改后 SearchView 未正确聚焦
SearchView not being focused properly after TabHost tab change
我有一个一直显示的 SearchView
和上面的 TabHost
如下:
我试图通过以下方式让 SearchView
专注于某些条件:
searchView.setIconified(false);
searchView.requestFocusFromTouch();
当我需要专注的时候。好像还不错。
但是,如果用户切换选项卡,在 TabHost.OnTabChangeListener
中重新聚焦 SearchBar
似乎无法正常工作 - 键盘仍显示为好像 SearchView
仍处于聚焦状态,但搜索视图上的光标消失了,用户无法输入任何内容。点击搜索视图可以解决问题,但我想 "tap" 自己而不是用户。
如何正确地重新聚焦搜索视图?
我最终在延迟后重新聚焦 SearchView 以允许 UI 完成更新(在移动设备上,对于简洁和拼写错误):
tabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {
@Override public void onTabChanged(String tabId) {
searchView.postDelayed(new Runnable() {
@Override public void run() {
searchView.setIconified(false);
searchView.requestFocusFromTouch();
}
}, 100);
}
});
我有一个一直显示的 SearchView
和上面的 TabHost
如下:
我试图通过以下方式让 SearchView
专注于某些条件:
searchView.setIconified(false);
searchView.requestFocusFromTouch();
当我需要专注的时候。好像还不错。
但是,如果用户切换选项卡,在 TabHost.OnTabChangeListener
中重新聚焦 SearchBar
似乎无法正常工作 - 键盘仍显示为好像 SearchView
仍处于聚焦状态,但搜索视图上的光标消失了,用户无法输入任何内容。点击搜索视图可以解决问题,但我想 "tap" 自己而不是用户。
如何正确地重新聚焦搜索视图?
我最终在延迟后重新聚焦 SearchView 以允许 UI 完成更新(在移动设备上,对于简洁和拼写错误):
tabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {
@Override public void onTabChanged(String tabId) {
searchView.postDelayed(new Runnable() {
@Override public void run() {
searchView.setIconified(false);
searchView.requestFocusFromTouch();
}
}, 100);
}
});