android - SearchView.isFocused 总是返回 false

标签 android widget android-actionbar searchview

我正在尝试确定 ActionBar 中的 SearchView 是否获得焦点。但是当我调用 SearchView.isFocused() 时,我总是得到 false 结果,即使 View 真正聚焦(里面有一个光标,软键盘是显示)。

如何检查 SearchView 是否获得焦点?

最佳答案

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

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;
}

所以我调用 checkFocusRec(searchView) 来检查焦点。我不确定这是最佳解决方案,但它适合我。

关于android - SearchView.isFocused 总是返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24082745/

相关文章:

flutter - 行中忽略的小部件对齐

android - Android 中的 SearchView 展开/折叠动画

Android Oreo 如何从 uri 获取真实路径?

android studio项目gradle的java.lang.NullPointerException

android - 如何设置长 PreferenceScreen 的滚动位置

ios - 将ios小部件添加到现有react-native项目后无法构建: symbol(s) not found for architecture x86_64

android - 如何仅在 Ubuntu 上安装 Android Studio 命令行工具

animation - 如何在无效输入时晃动 Flutter 中的小部件?

android-如何更改操作栏项目 api 8+ 中的字体大小

android - 像图书应用程序一样的操作栏