我正在使用具有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();
}
});
答案 0 :(得分:2)
您可以使用OnGlobalFocusChangeListener
课程中的ViewTreeObserver
。它公开了一种方法onGlobalFocusChanged(View oldFocus, View newFocus)
。您只需要检查oldFocus
是否是您感兴趣的视图。
答案 1 :(得分:-1)
您可以在此EditText上的已实现的OnFocusChangeListener中传递全局布尔标志。
像布尔这样的全局变量isViewOnFocus = false;
并在OnFocuChangeListener中更改其值。我相信这个小小的改变不会造成任何问题