EditText在imeOptions
单独设置为actionDone
(acotionSend
,actionGo
...etc)时,往往不起作用,需要同时设置 inputType
和singleLine=true
属性。
但是在实践中发现,这样的设置有个问题就是只能单行输入,不能自动换行,有时候我们不想在界面上多设置一个action button,但是又想让输入框支持多行输入怎么办呢?
设置android:inputType="textMultiLine"
可能只在某些输入法下有作用。
这里提供另外一种设置方式,可以确保大部分输入法支持。
我们在xml
布局中设置
<EditText
android:id="@+id/chat_input_et"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:hint="说点什么..."
android:lineSpacingExtra="4dp"
android:paddingStart="16dp"
android:paddingTop="12dp"
android:inputType="textMultiLine"
android:maxLines="3"
android:paddingEnd="16dp"
android:paddingBottom="12dp"
android:textColor="@color/black3"
android:textSize="16sp" />
其中最重要的就是这两句
android:inputType="textMultiLine"
android:maxLines="3"
其他的属性要在代码里设置:
input_et.imeOptions= EditorInfo.IME_ACTION_SEND
input_et.setRawInputType(TYPE_CLASS_TEXT)
这样就可以了,经测试在搜狗,百度,谷歌输入法中均有效。