Android的EditText設置光標一直顯示而不閃爍的問題

本人最近在做的一個項目,關於EditText有這樣一個需求: 用戶在失去當前EditText的焦點時會出發聯網上傳數據的操作,代碼如下:

editText..setOnFocusChangeListener(new OnFocusChangeListener() {

     @Override
     public void onFocusChange(final View view, boolean hasFocus) {

         

              if(!hasFocus){

                                //失去焦點後,,向服務器發送Http請求,將數據上傳.

              }else{

                             //用戶獲得焦點.

              }

     }

};

運行程序發現數據可以上傳了。但是,通過log信息發現,當獲得焦點後,每隔0.5S左右,這個Http請求就會執行一次。

本來還很奇怪的,後來無意中注意到了這個光標。果然,Log信息會隨光標的消失而執行 !hasFocus 的操作。那麼這就麻煩了,每隔0.5S會聯網一次,這太扯淡了。

 

我趕緊看了看AndroidEditText源代碼,有關CurSor的在TextView中的:

public void setCursorVisible(boolean visible) 方法,有關光標的設置在makeBlink();方法中,可是它是個private方法,代碼如下:

void makeBlink() {

        if (shouldBlink()) {

            mShowCursor = SystemClock.uptimeMillis();

            if (mBlink == null) mBlink = new Blink();

            mBlink.removeCallbacks(mBlink);

            mBlink.postAtTime(mBlink, mShowCursor + BLINK);

        } else {

            if (mBlink != null) mBlink.removeCallbacks(mBlink);

        }

    }

這裏面mBlink是一個實現了runnableprivate類,而它恰好是每隔500ms執行一次.

 

好吧,這麼糾結的代碼,我是寫不了了,不知道哪位大俠遇到過類似的問題,如果我向重寫一下EditTextsetCursorVisible,重新寫mBlink,這個咋寫啊?感覺好吃力啊…..

求大神......

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章