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

时间:2016-02-24 16:25:59

标签: android android-edittext focus

我正在使用具有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();
    }
});

2 个答案:

答案 0 :(得分:2)

您可以使用OnGlobalFocusChangeListener课程中的ViewTreeObserver。它公开了一种方法onGlobalFocusChanged(View oldFocus, View newFocus)。您只需要检查oldFocus是否是您感兴趣的视图。

答案 1 :(得分:-1)

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

像布尔这样的全局变量isViewOnFocus = false;

并在OnFocuChangeListener中更改其值。我相信这个小小的改变不会造成任何问题