亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

隱藏鍵盤時停止關注EditText

隱藏鍵盤時停止關注EditText

幕布斯6054654 2019-04-18 15:11:40
我來自iOS開發和Android應用程序制作的新功能,在Android中看起來很奇怪,為什么EditText在鍵盤被隱藏時保持專注?我試圖在我的EditText上設置一個OnFocusChangeListener,但是當鍵盤隱藏時,這不起作用,不調用監聽器。我也嘗試使用onChangeListener檢測鍵盤隱藏,但它不起作用..(顯然只有硬鍵盤)。        @Override         public void onFocusChange(View v, boolean hasFocus) {             // not called when keyboard hides         }     });我一直在尋找一段時間,我只找到了在首次發布時停止焦點的答案,但這不是我想要的......謝謝
查看完整描述

6 回答

?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

試試這個:


this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);


查看完整回答
反對 回復 2019-05-15
?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

要捕獲鍵盤的打開/關閉事件,請使用以下代碼:


    //...

    private int layoutSize = 0;

    private boolean isKeyboardVisible = false;

    //...

    @Override

    public void onCreate(Bundle savedInstanceState) {

        setKeyboardOpenListener();

    }

    //...

    private void setKeyboardOpenListener() {

            View activityRootView = findViewById(android.R.id.content);

            activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(() -> {

                if (activityRootView.getHeight() + Util.getStatusBarHeight(this) >= layoutSize) {

                    layoutSize = activityRootView.getHeight();

                    if (isKeyboardVisible) {

                        isKeyboardVisible = false;

                        onKeyboardClose();

                    }

                } else {

                    if (!isKeyboardVisible) {

                        isKeyboardVisible = true;

                        onKeyboardOpen();

                    }

                }

            });

        }

    //...

    public static int getStatusBarHeight(Context context) {

            int result = 0;

            int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");

            if (resourceId > 0) {

                result = context.getResources().getDimensionPixelSize(resourceId);

            }

            return result;

        }


查看完整回答
反對 回復 2019-05-15
?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

您可以簡單地使用此代碼,您的重點將會消失

editText.clearFocus();


查看完整回答
反對 回復 2019-05-15
?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

最近我用一個好的庫解決了這個問題。它處理鍵盤可見性事件。

將其添加到您的應用程序級Gradle文件。

dependencies {implementation'net.yslibrary.keyboardvisibilityevent:keyboardvisibilityevent:2.3.0'}

啟用鍵盤事件:

KeyboardVisibilityEvent.setEventListener(
    getActivity(),
    new KeyboardVisibilityEventListener() {
        @Override
        public void onVisibilityChanged(boolean isOpen) {
            if (isOpen)
                  //Keyboard is showing.
            else
               yourEditText.clearFocus()
               yourEditText.setCursorVisible(false) //Only if the cursor keeps blinking else no need use it.
                 //Keyboard is now closed.
        }
    });

遺憾的是,沒有“正確”的方法來處理鍵盤可見性事件。你得到的只是黑客來檢測它。


查看完整回答
反對 回復 2019-05-15
?
ITMISS

TA貢獻1871條經驗 獲得超8個贊

使用editText.clearFocus()和editText.setCursorVisible(false)兩種方法,它可能會幫助你。


查看完整回答
反對 回復 2019-05-15
  • 6 回答
  • 0 關注
  • 553 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號