SearchView.isFocused 始终返回 false

net*_*men 3 android widget android-actionbar searchview

我正在尝试确定SearchViewActionBar 中的 a 是否获得焦点。但是当我打电话时,SearchView.isFocused()我总是得到false结果,即使视图真正聚焦(内部有光标,并且显示软键盘)。

如何检查 a 是否SearchView聚焦?

net*_*men 5

经过一些研究,我了解到SearchView.isFocused()总是会返回,因为真正拥有焦点false的是某个孩子,而不是其本身。所以我使用以下代码来检查 SearchView 的焦点:SearchViewSearchView

private boolean checkFocusRec(View view) {
    if (view.isFocused())
        return true;

    if (view instanceof ViewGroup) {
        ViewGroup viewGroup = (ViewGroup) view;
        for (int i = 0; i < viewGroup.getChildCount(); i++) {
            if (checkFocusRec(viewGroup.getChildAt(i)))
                return true;
        }
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

所以我打电话checkFocusRec(searchView)来检查焦点。我不确定这是否是最佳解决方案,但它对我有用。