Edittext Android 多行

问题描述 投票:0回答:6

我有以下问题。 我有一个编辑文本,用户在其中输入电影名称。如果用户按 Enter 键,我希望焦点转到下一个编辑文本,用户在其中键入电影的描述。 我不希望用户能够将电影标题放入两行,即我希望将其全部放在一行上而无需输入。 但是,当我使用 android:singleLine="true" 或 android:maxLines 时,电影标题会打印在一行上,但如果电影标题很长,则不会一次全部显示(必须滚动)。 如果有必要,我希望编辑文本的高度增加到多行,但我不希望用户使用 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"

    />

谢谢你

android android-edittext
6个回答
1
投票

也许想法是创建您的自定义

editText
,您可以覆盖
onKeyDown
方法并检查用户是否按下了Enter键,如果是这样您可以隐藏键盘或其他东西。

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
投票

使用

android:inputType="textMultiLine"

&删除

android:imeOptions="actionDone"

0
投票

尝试一下。
在编辑文本中添加输入类型。

单线

android:inputType="text"

对于多行

android:inputType="textMultiline"

0
投票

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

我认为这篇文章可能对您有价值。 处理 EditText 中的“Enter”键


0
投票

我和你有同样的问题,只设置

textMultiLine
是行不通的,添加
android:scrollbars="vertical"
并且你想定义一个
android:maxHeight="max_size_in_dp"
,如果它溢出用户必须滚动的大小。

<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");

文字将按照您想要的方式显示。


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
进行软包装

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

这对我在 android 5.1 上的测试有用,但不太利于重复使用。所以如果你的需求比较苛刻,也可以考虑子类化

EditText

© www.soinside.com 2019 - 2024. All rights reserved.