348

可能重复:android-singleline-true-not-working-for-edittext

<EditText 
    android:id="@+id/searchbox"  
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:lines="1"
    android:scrollHorizontally="true"
    android:ellipsize="end"
    android:layout_weight="1"
    android:layout_marginTop="2dp"
    android:drawablePadding="10dp"
    android:background="@drawable/edittext"
    android:drawableLeft="@drawable/folder_full"
    android:drawableRight="@drawable/search"
    android:paddingLeft="15dp"
    android:hint="search...">
</EditText>

我想让上面EditText只有一行。即使用户按下“输入”,光标也不应该下到第二行。任何人都可以帮我这样做吗?

4

24 回答 24

621

使用android:maxLines="1"android:inputType="text"

您忘记了android:maxLines属性。并参考android:inputType用你的例子,下面会给出这个结果:

<EditText 
    android:id="@+id/searchbox"  
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:maxLines="1"
    android:inputType="text"
    android:scrollHorizontally="true"
    android:ellipsize="end"
    android:layout_weight="1"
    android:layout_marginTop="2dp"
    android:drawablePadding="10dp"
    android:background="@drawable/edittext"
    android:drawableLeft="@drawable/folder_full"
    android:drawableRight="@drawable/search"
    android:paddingLeft="15dp"
    android:hint="search...">
</EditText>
于 2012-06-11T10:12:26.263 回答
216

不推荐使用android:singleLine="true"

只需添加您的输入类型并将 maxline 设置为 1,一切都会正常工作

android:inputType="text"
android:maxLines="1"
于 2015-04-23T00:34:54.297 回答
55

android:singleLine现在已弃用。从文档中:

此常量在 API 级别 3 中已弃用。

此属性已弃用。改用maxLines更改静态文本的布局,并使用textMultiLineinputType 属性中的标志代替可编辑的文本视图(如果同时提供了 singleLine 和 inputType,则 inputType 标志将覆盖 singleLine 的值)。

因此,您可以设置android:inputType="textEmailSubject"或任何其他与字段内容匹配的值。

于 2013-05-05T03:51:13.497 回答
18

您必须在 xml 中的 EditText 中添加这一行:

android:maxLines="1"
于 2014-07-26T12:10:30.253 回答
16
android:maxLines="1"
android:inputType="text"

添加上面的代码以在布局中的 EditText 标记中添加一行。

android:singleLine="true" is deprecated

此常量在API 级别 3中已弃用

此属性已弃用。改用 maxLines 来更改静态文本的布局,并使用 inputType 属性中的 textMultiLine 标志代替可编辑的文本视图(如果同时提供了 singleLine 和 inputType,则 inputType 标志将覆盖 singleLine 的值)。

于 2016-03-29T14:23:55.170 回答
13

现在android:singleLine属性已被弃用。请将这些属性添加到您EditTextEditText单行中。

android:inputType="text"
android:imeOptions="actionNext"
android:maxLines="1"
于 2016-06-02T06:26:32.283 回答
11

我过去已经这样做了android:singleLine="true",然后为“enter”键添加了一个侦听器:

((EditText)this.findViewById(R.id.mytext)).setOnKeyListener(new OnKeyListener() {

    public boolean onKey(View v, int keyCode, KeyEvent event) {

        if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_ENTER) {
            //if the enter key was pressed, then hide the keyboard and do whatever needs doing.
            InputMethodManager imm = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(getApplicationWindowToken(), 0);

            //do what you need on your enter key press here

            return true;
        }

        return false;
    }
});
于 2012-06-11T10:12:47.253 回答
11

这将适用于 EditText:

android:inputType="text"

然后我会为输入文本设置一个最大长度:

android:maxLines="1"

这些是现在需要的 2 个。

于 2016-09-18T20:34:23.780 回答
7

包括 android:singleLine="true"

于 2012-06-11T10:10:08.903 回答
5

每个人都在展示 XML 方式,除了一个人展示了调用 EditText 的 setMaxLines 方法。但是,当我这样做时,它没有用。对我有用的一件事是设置输入类型。

EditText editText = new EditText(this);
editText.setInputType(InputType.TYPE_CLASS_TEXT);

这允许 AZ、az、0-9 和特殊字符,但不允许按 Enter。当您按下回车键时,它将转到下一个 GUI 组件(如果适用于您的应用程序)。

您可能还想设置可以放入该 EditText 的最大字符数,否则它将把右边的任何内容推离屏幕,或者只是开始拖离屏幕本身。你可以这样做:

InputFilter[] filters = new InputFilter[1];
filters[0] = new InputFilter.LengthFilter(8);
editText.setFilters(filters);

这会将 EditText 中的最大字符数设置为 8。希望这一切对你有所帮助。

于 2016-03-06T12:47:56.207 回答
3

以编程方式:

textView.setMaxLines(1);
于 2016-03-01T10:43:31.953 回答
2

采用

android:ellipsize="end"
android:maxLines="1"
于 2012-06-11T10:13:04.923 回答
2

为了限制您只需将单行选项设置为“true”。

android:singleLine="true"
于 2014-04-10T14:24:12.360 回答
2

请尝试此代码

android:inputType="textPersonName"
于 2018-06-26T01:56:23.780 回答
1

使用下面的代码而不是您的代码

<EditText 
    android:id="@+id/searchbox"  
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:maxLines="1"
    android:inputType="text"
    android:scrollHorizontally="true"
    android:ellipsize="end"
    android:layout_weight="1"
    android:layout_marginTop="2dp"
    android:drawablePadding="10dp"
    android:background="@drawable/edittext"
    android:drawableLeft="@drawable/folder_full"
    android:drawableRight="@drawable/search"
    android:paddingLeft="15dp"
    android:hint="search..."/>
于 2012-06-11T10:13:32.927 回答
1

@Aleks G OnKeyListener() 工作得非常好,但我从 MainActivity 运行它,因此不得不稍微修改它:

EditText searchBox = (EditText) findViewById(R.id.searchbox);
searchBox.setOnKeyListener(new OnKeyListener() {

    public boolean onKey(View v, int keyCode, KeyEvent event) {

        if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_ENTER) {
            //if the enter key was pressed, then hide the keyboard and do whatever needs doing.
            InputMethodManager imm = (InputMethodManager) MainActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(searchBox.getApplicationWindowToken(), 0);

            //do what you need on your enter key press here

            return true;
        }

        return false;
    }
});

我希望这可以帮助任何尝试这样做的人。

于 2013-06-16T23:37:22.093 回答
1

同样重要的是要注意属性 android:inputType 是否为textMultiLine。如果是这样,属性 android:singleLine、android:imeOptions、android:ellipsize 和 android maxLines 将被忽略,并且您的 EditText 无论如何都会接受 MultiLines。

于 2014-11-10T20:44:00.417 回答
1

将此行添加到您的编辑文本

安卓:inputType="文本"

于 2016-01-20T11:20:53.637 回答
1
android:imeOptions="actionDone"

为我工作。

于 2017-10-20T17:57:13.723 回答
0

android:singleLine="true"现在已折旧,因此 请使用

安卓:m​​axLines="1"

改用 maxLines 来更改静态文本的布局,并使用 inputType 属性中的 textMultiLine 标志代替可编辑的文本视图(如果同时提供了 singleLine 和 inputType,则 inputType 标志将覆盖 singleLine 的值)。

于 2013-10-12T10:12:14.947 回答
0

在 XML 文件中在编辑文本中添加此属性

 android:maxLines="1"
于 2017-10-02T11:39:29.470 回答
0

您必须在 EditText 中添加这一行

android:maxLines="1"

还有一件事,不要忘记设置 android:inputType(无论你想要什么,短信,电话......,但你必须设置它)

于 2019-07-31T03:31:45.183 回答
0

在 XML 文件中。只需添加

安卓:m​​axLines="1"

于 2019-11-01T04:02:27.413 回答
0

对我来说,我是这样做的,转到 xml 文件中的 textView 并添加这两行

` android:maxLines="1"

安卓:inputType="文本"`

于 2020-09-29T08:06:51.990 回答