簡體   English   中英

如何在按下“返回”鍵時使編輯文本失去焦點?

[英]How to make edittext lose focus when 'Return' key is pressed?

當我在EditText按下'Return'鍵時,它會通過增大它來換行。 如何在按下“返回”鍵時使EditText失去焦點? 換句話說,如何在按下“返回”鍵時使鍵盤消失?

使用以下短代碼獲取Return事件並消失鍵盤。

(EditText) findViewById(R.id.editText1)).setOnKeyListener(new OnKeyListener() {
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        if (keyCode == 66) {
            hideKeyboard(v);
            return true; //this is required to stop sending key event to parent
        }
        return false;
    }
});

在上面的代碼66為代碼Return也可以使用KeyEvent.KEYCODE_ENTER通過@JJPA為優選的。

以下是明確隱藏鍵盤的代碼。

private void hideKeyboard(View view) {
    InputMethodManager manager = (InputMethodManager) view.getContext()
            .getSystemService(INPUT_METHOD_SERVICE);
    if (manager != null)
        manager.hideSoftInputFromWindow(view.getWindowToken(), 0);
}

如果您不希望用戶按下返回鍵,請避免顯示它。

您可以做的是,使EditText singleLine並與android:nextFocus *一起玩一些,以實現更加用戶友好的IME導航。 對於您的問題,您可以簡單地從xml修改您的EditText,例如

<EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/edit"
        android:singleLine="true"
/>

您需要使用TextWatcher,以便可以捕獲\\ n字符並修改文本,因此沒有新行,這就是魔術:

mFirstEditText.addTextChangedListener( new TextWatcher() {

    private boolean mEnterOccurred;

    @Override
    public void onTextChanged(CharSequence text, int start, int before, int count) {
        String textStr = text.toString();
        if(textStr.contains("\n")) {
            // Wipe off the \n
            textStr = textStr.replace("\n", "");
            mEnterOccurred = true;
            mFirstEditText.setText(textStr);
        }
    }

    @Override
    public void beforeTextChanged(CharSequence text, int start, int count, int after) {
    }

    @Override
    public void afterTextChanged(Editable s) {
        if(mEnterOccurred) {
            // Change focus to another EditText
            mSecondEditText.requestFocus();
            // Change flag to default
            mEnterOccurred = false;
        }
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM