Android 如何在不实现OnFocusChangeListener的情况下检测EditText上的焦点丢失事件
我正在使用具有EditText的库,我需要检测此EditText的焦点何时丢失。 库已经在此EditText上添加了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
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中更改其值。我确信这个小小的改变不会引起任何问题就像我说的,这是不可能的,因为你不能改变库代码,除非我做一个分叉。丹奈尔的解决方案奏效了。