如何使Android EditText在完整时垂直展开

时间:2014-12-30 00:47:12

标签: android android-edittext

我有这个EditText

<EditText
    android:layout_width="match_parent"
    android:layout_height="72dp"
    android:hint="@string/write_message"
    android:textColorHint="@color/primary_color"
    android:ems="10"
    android:imeOptions="actionDone"
    android:inputType="textImeMultiLine"
    android:id="@+id/message_input"
    android:layout_gravity="center_horizontal"
    android:backgroundTint="@color/primary_color"/>

当框中填满用户输入的文本时,它会向右滚动以腾出更多文字空间,我不喜欢这种行为,如果EditText框在需要更多空间时向上展开,它会更喜欢它吗?有没有办法做到这一点?感谢。

3 个答案:

答案 0 :(得分:21)

是的,这实际上涉及两件事:

  1. 使EditText接受多行输入。
  2. 随着更多文字行的添加,其高度会增加。
  3. 因此,要实现这一目标,您需要设置:

    android:inputType="textMultiLine"
    android:layout_height="wrap_content"
    

    (请注意difference between textMultiLine and textImeMultiLine)。

    完整的XML代码段为:

    <EditText
        android:layout_width="match_parent"
        android:inputType="textMultiLine"
        android:layout_height="wrap_content"
        android:hint="@string/write_message"
        android:textColorHint="@color/primary_color"
        android:ems="10"
        android:imeOptions="actionDone"
        android:id="@+id/message_input"
        android:layout_gravity="center_horizontal"
        android:backgroundTint="@color/primary_color"/>    
    

答案 1 :(得分:0)

同时使用两个标志:textMultiLine将包装您的输入,而textImeMultiLine将在键盘中提供一个换行键。

 <EditText
    ...
    android:layout_height="wrap_content"
    android:inputType="textImeMultiLine|textMultiLine"
    ... />

答案 2 :(得分:0)

在我的情况下,我有多行文字,但显示了一行和一个键盘:

enter image description here

尽管我已经设置了private async void MouseLeftDown_TwoSideButton(object sender, MouseButtonEventArgs e) ,但并没有帮助。然后我知道,当键盘出现在android:inputType="textCapSentences|textAutoCorrect|textMultiLine"中时,它会折叠DialogFragment。显示EditText时,请参见DialogFragment and force to show keyboard以显示键盘。

然后,在显示键盘之前,我添加了一个较短的延迟(100-300毫秒)。现在我有:

enter image description here

DialogFragment中,将AndroidManifest设置为当前活动。