首页 热点专区 小学知识 中学知识 出国留学 考研考公
您的当前位置:首页正文

EditText的焦点

2024-12-07 来源:要发发知识网

在处理EditText是否可以输入的时候,我们通常会想到使用Focus来控制,但是仅使用android.view.View#setFocusable(int)却不一定能满足我们需求。当我们想要重新可以输入,设置setFocusable(true)不起作用。
正确的使用方法是:

   public void enable(View view) {
        editText.setFocusableInTouchMode(true);
    }

    public void disable(View view) {
        editText.setFocusable(false);
    }
 public void setFocusableInTouchMode(boolean focusableInTouchMode) {
        // Focusable in touch mode should always be set before the focusable flag
        // otherwise, setting the focusable flag will trigger a focusableViewAvailable()
        // which, in touch mode, will not successfully request focus on this view
        // because the focusable in touch mode flag is not set
    

      //这段话是重点,意思就是说这个方法应该在设置focusable flag之前调用。


        setFlags(focusableInTouchMode ? FOCUSABLE_IN_TOUCH_MODE : 0, FOCUSABLE_IN_TOUCH_MODE);

        // Clear FOCUSABLE_AUTO if set.
        if (focusableInTouchMode) {
            // Clears FOCUSABLE_AUTO if set.
            setFlags(FOCUSABLE, FOCUSABLE_MASK);
        }
    }
显示全文