Android - Multiline EditText没有自动换行符

时间:2017-09-15 09:47:42

标签: java android xml android-edittext

我需要实现一个EditText,它允许的文本超过屏幕大小,如下所示:

android:inputType="textLongMessage"

但也支持Enter键,如:

android:inputType="textMultiLine"

尝试覆盖dispatchKeyEvent,但仍然无法解决此问题。

<EditText
        android:id="@+id/basicBatEdittext"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="3"
        android:background="#000"
        android:gravity="top"
        android:scrollHorizontally="true"
        android:hint="Hey there!\nHow is it going?"
        android:inputType="textLongMessage"
        android:padding="6dp"
        android:textColor="#fff"
        android:textColorHint="#fff"
        android:textCursorDrawable="@null" />


    @Override
public boolean dispatchKeyEvent(KeyEvent event) {

    if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER || event.getKeyCode() == KeyEvent.ACTION_DOWN || event.getKeyCode() == KeyEvent.KEYCODE_NAVIGATE_NEXT) {

        String temp = edittext.getText().toString() + "\n";
        edittext.setText(temp);

            return true;
        }

    return super.dispatchKeyEvent(event);
};

它只是在EditText上附加两个空格。

1 个答案:

答案 0 :(得分:2)

textLongMessage是文本变体(对应TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_LONG_MESSAGE),而textMultiLine是一个标记(TYPE_TEXT_FLAG_MULTI_LINE),因此理论上可以将它们混合使用:

  android:inputType="textMultiLine|textLongMessage"

我不知道为什么但只有在您将scrollHorizontally设置为true 以编程方式

时才有效
someEditText.setHorizontallyScrolling(true);