Android 如何在不实现OnFocusChangeListener的情况下检测EditText上的焦点丢失事件

Android 如何在不实现OnFocusChangeListener的情况下检测EditText上的焦点丢失事件,android,android-edittext,focus,Android,Android Edittext,Focus,我正在使用具有EditText的库,我需要检测此EditText的焦点何时丢失。 库已经在此EditText上添加了OnFocusChangeListener,因此我无法覆盖此侦听器,因为它将破坏功能 当用户失去EditText的焦点时,是否有其他方法可以检测 解决方案: ViewTreeObserver viewTreeObserver = getViewTreeObserver(); viewTreeObserver.addOnGlobalFocusChangeListener(new Vi

我正在使用具有EditText的库,我需要检测此EditText的焦点何时丢失。 库已经在此EditText上添加了OnFocusChangeListener,因此我无法覆盖此侦听器,因为它将破坏功能

当用户失去EditText的焦点时,是否有其他方法可以检测

解决方案:

ViewTreeObserver viewTreeObserver = getViewTreeObserver();
viewTreeObserver.addOnGlobalFocusChangeListener(new ViewTreeObserver.OnGlobalFocusChangeListener() {
    @Override
    public void onGlobalFocusChanged(View oldFocus, View newFocus) {
        //oldFocus could be null
        if (oldFocus == null || !oldFocus.equals(myEditText)) {
            return;
        }
        doYourThing();
    }
});

您可以在
ViewTreeObserver
类中使用
OnGlobalFocusChangeListener
。它公开了一个方法
onGlobalFocusChanged(查看旧焦点,查看新焦点)
。您只需检查
oldFocus
是否是您感兴趣的视图。

您可以在此EditText上的已实现OnFocusChangeListener中传递一个全局布尔标志

一个全局变量,如布尔值isViewOnFocus=false


并在onFocusAngelistener中更改其值。我确信这个小小的改变不会引起任何问题

就像我说的,这是不可能的,因为你不能改变库代码,除非我做一个分叉。丹奈尔的解决方案奏效了。