我需要实现一个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上附加两个空格。
答案 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);