将edittext限制为单行


312

可能重复: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只有一行。即使用户按下“输入”,光标也不应下降到第二行。有人可以帮我吗?


60
使用android:singleLine=true
Praveenkumar 2012年

6
将android:lines =“ 1”替换为android:singleLine=true
Mohammed Azharuddin Shaikh 2012年

3
true必须在引号中
加上

8
随着singleLine的弃用,您可以使用maxLines = 1和inputType = text。
sunlover3 '16

4
使用android:inputType="textVisiblePassword"将解决问题
Saad Mahmud

Answers:


556

使用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>

17
@ Lukasz'Severiaan'Grela在当前的Eclipse IDE,没有暗示弃用示出,并且机器人:MAXLINES不限制输入到一个线
MJN

10
使用
singleline

2
@Praveen:您能在不推荐使用android:singleLine的地方提供参考吗?我在API 23上看不到它。我在文档中没有看到它,并且当我将其与23.0.1SDK
一起

5
从API级别3开始不推荐使用。请参阅:developer.android.com/reference/android/R.attr.html#singleLine
路易斯

3
如果仅使用android:maxLines =“ 1”将不起作用。因此,您需要同时使用android:inputType =“ text”和maxlines -1。然后它将可以正常使用
Hanuman

193

使用android:singleLine="true"已被弃用。

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

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

80
如果您不指定inputType,那是我发现的不起作用。

10
你的权利。的inputType =“textMultiLine”仍将给你多你即使设置最大行1
ralphgabb

2
请注意,因为android:inputType="number"已经有最多1行。
Micer

如果我的textview很长并且我希望它是多行的,但不能使用换行符,则此方法不起作用。
htafoya

@htafoya此代码段适用于使编辑文本变为单行。但是,您可以在SO处提出一个新问题。
ralphgabb

54

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

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

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

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


29
如果您想使用简单的行文本字段,请使用android:inputType="text"
PhoneixS 2013年

谢谢@先生。Bungle,textMultiLine为我工作!
user1510006

18

您必须在xml的EditText中添加以下行:

android:maxLines="1"

3
至于其他的答案已经指出-这已被弃用,取而代之的maxLinesinputType组合
詹尼斯Peisenieks

16
android:maxLines="1"
android:inputType="text"

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

android:singleLine="true" is deprecated

API级别3中不推荐使用此常数。

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


13

现在android:singleLine不推荐使用该属性。请将这些属性添加到您EditTextEditText单行中。

android:inputType="text"
android:imeOptions="actionNext"
android:maxLines="1"

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

11

这将适用于EditText:

android:inputType="text"

然后,我将为输入文本设置最大长度:

android:maxLines="1"

这些是现在需要的2个。



5

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

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

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

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

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

这会将最大字符设置为该EditText中的8个字符。希望所有这些对您有所帮助。





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

我希望这对尝试这样做的人有所帮助。



1

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



1

由于 android:singleLine="true"现在已贬值所以请使用

android:maxLines =“ 1”

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


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..."/>

0

在XML文件中,将此属性添加到“编辑文本”中

 android:maxLines="1"


0

您必须在EditText中添加此行

android:maxLines="1"

还有另一件事,不要忘记设置 android:inputType(无论您想要什么,文本,电话..,但必须进行设置)


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.