Edittext Android多行

时间:2015-12-22 18:49:33

标签: android android-edittext

我有以下问题。 我有一个编辑文本,用户放入电影名称。如果用户按下回车,我希望焦点转到下一个edittext,用户在其中键入电影的描述。 我不希望用户能够用两行放置一个电影标题,即我想要一行而不输入。 然而,当我使用android:singleLine =" true"或android:maxLines时,电影标题打印在一行上,但如果电影标题很长,则不会一次全部显示(必须滚动)对面)。 我希望edittext在必要时增加到多行,但我不希望用户使用enter来创建新行。 我该怎么做呢。 这是我的代码:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Movie title"
    android:textSize="15sp"/>

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="15sp"
    android:id="@+id/et_AddMovieTitle"
    />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Movie description"
    android:textSize="15sp"/>

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="15sp"
    android:id="@+id/et_AddMovieDescription"

    />

谢谢

6 个答案:

答案 0 :(得分:1)

也许并且想法是创建自定义editText,您可以覆盖onKeyDown方法并检查用户是否按下了输入,如果是,您可以隐藏键盘或其他内容。

class CustomEditTexxt extends EditText
{
    ...
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)
    {
        if (keyCode==KeyEvent.KEYCODE_ENTER) 
        {
            // hide the keyboard
            return true;
        }
        // handle all other keys in the default way
        return super.onKeyDown(keyCode, event);
    }
}

答案 1 :(得分:0)

试试吧 在编辑文本中添加输入类型。

  

单行

android:inputType="text"
  

用于多行

android:inputType="textMultiline"

答案 2 :(得分:0)

我认为您必须覆盖回车键功能,以防止用户使用“Enter”在EditText中添加一行。您应该只需将焦点更改为此处的下一个EditText并覆盖新的线逻辑。

我认为这篇文章可能对你有价值。 Handling "Enter" key in an EditText

答案 3 :(得分:0)

过去,我使用android:imeOptions="actionNext"强制用户进入下一个输入字段。

您可以查看action文档,以验证您需要imeOptions。您可能还想查看使用actionDone选项,以便在选择最后一个字段时轻松提交表单。

因此,快速/便宜的方式是设置为单行EditText启用“下一步”按钮:

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="15sp"
    android:imeOptions="actionNext"
    android:singleLine="true"
    android:id="@+id/et_AddMovieTitle"
    />

然后通过应用以下程序化配置强制EditText执行soft-wrapping

editText.setHorizontallyScrolling(false);
editText.setMaxLines(Integer.MAX_VALUE);

这适用于我在Android 5.1上进行测试,但不太适合重复使用。因此,如果您的需求更苛刻,您还可以考虑subclassing EditText

答案 4 :(得分:0)

我遇到了与您相同的问题,仅设置textMultiLine无效,添加android:scrollbars="vertical"并且您希望定义android:maxHeight="max_size_in_dp"如果超出大小,用户必须滚动。< / p>

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="Enviar seu comentário"
    android:scrollbars="vertical"
    android:maxHeight="100dp"
    android:inputType="textCapSentences|textMultiLine"/>

editText.setText("big_text_description_here");

文本将根据需要显示。

答案 5 :(得分:0)

使用

机器人:的inputType =&#34; textMultiline&#34;

&安培;删除

机器人:imeOptions =&#34; actionDone&#34;