从Android

时间:2016-02-12 07:14:52

标签: android android-edittext enter

我有一个EditText,它应该在输入时有多行,并且在按下enter时应该有一个动作,这意味着软键盘应该消失,光标变得不可见......基本上是{{ 1}}应该失去"焦点"。

现在这已经完成并正常工作,但问题是"输入" key在EditText

中留下一个新行

我尝试通过将整个文本设置为EditText来删除它,但""为空,并添加了新行。

我试图通过将EditText替换为'\n'并将文本设置回来来删除它,但文本以新行开头。

's'

提前致谢。

1 个答案:

答案 0 :(得分:0)

我知道这是一个较晚的答案,但也许可以帮助某人。

我最近遇到了这个问题,我通过在addTextChangedListener上实现EditText来解决了这个问题。

代码:

EditText editText = new EditText(this);
layout.addView(editText);
editText.addTextChangedListener(new TextWatcher() {
    boolean ignore = false; // This is used to prevent infinite recursion in the afterTextChanged method

    @Override
    public void afterTextChanged(Editable arg0) {
        if (ignore) return;

        ignore = true;

        String s = arg0.toString();
        if (s.length() > 0) {
            // The condition checks if the last typed char's ASCII value is equal to 10, which is the new line decimal value
            if (((int)(s.charAt(s.length()-1)) == 10)) {
                String newStr = s.substring(0, s.length()-1); // Removes the new line character from the string
                editText.setText(newStr);
                editText.setSelection(editText.length()); // Sets the text cursor to the end of the text
            }
        }

        ignore = false;
    }

    @Override
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {   
    }
});

也许有更好的方法来摆脱换行符,但这对我有用,而且看起来很简单。