将edittext限制为单行

时间:2012-06-11 10:04:44

标签: android android-edittext

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

24 个答案:

答案 0 :(得分:479)

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

答案 1 :(得分:177)

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

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

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

答案 2 :(得分:53)

android:singleLine现已弃用。来自documentation

  

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

     

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

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

答案 3 :(得分:18)

您必须在xml:

中的EditText中添加此行
android:maxLines="1"

答案 4 :(得分:14)

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

添加上面的代码,使您的布局中的EditText标记中有一行。

android:singleLine="true" is deprecated
  

此常量在 API级别3 已弃用

     

不推荐使用此属性。请改用maxLines来改变   布局静态文本,并使用textMultiLine标志   inputType属性代替可编辑的文本视图(如果两者都有)   提供singleLine和inputType,inputType标志将   覆盖singleLine的值。

答案 5 :(得分:12)

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

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

答案 6 :(得分: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;
    }
});

答案 7 :(得分:11)

这适用于EditText:

android:inputType="text"

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

android:maxLines="1"

这些是现在需要的2个。

答案 8 :(得分:6)

加入android:singleLine="true"

答案 9 :(得分:5)

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

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

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

您可能还想设置可以放入EditText的最大字符数,否则它会将其右侧的任何字符推出屏幕,或者只是开始拖尾屏幕本身。你可以这样做:

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

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

答案 10 :(得分:2)

使用

android:ellipsize="end"
android:maxLines="1"

答案 11 :(得分:2)

请尝试以下代码

android:inputType="textPersonName"

答案 12 :(得分:2)

编程方式:

textView.setMaxLines(1);

答案 13 :(得分:1)

将此行添加到您的edittext

机器人:的inputType = “文本”

答案 14 :(得分:1)

如果属性android:inputType为 textMultiLine ,请务必注意。如果是这样,属性android:singleLine,android:imeOptions,android:ellipsize和android maxLines将被忽略,你的EditText仍将接受MultiLines。

答案 15 :(得分:1)

为了限制你只需要在&#34; true&#34;上设置单行选项。

android:singleLine="true"

答案 16 :(得分:1)

由于android:singleLine="true"现在是Depreciated所以请使用

机器人:MAXLINES = “1”

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

答案 17 :(得分: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;
    }
});

我希望这有助于任何人尝试这样做。

答案 18 :(得分:1)

使用以下代码代替您的代码

<EditText 
    android:id="@+id/searchbox"  
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:lines="1"
    android:singleLine="true"
    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..."/>

答案 19 :(得分:0)

XML文件中的

在“编辑文本”中添加此属性

 android:maxLines="1"

答案 20 :(得分:0)

android:imeOptions="actionDone"

为我工作。

答案 21 :(得分:0)

您必须在EditText中添加此行

android:maxLines="1"

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

答案 22 :(得分:0)

在XML文件中。只需添加

android:maxLines =“ 1”

答案 23 :(得分:0)

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

`android:maxLines =“ 1”

android:inputType =“ text”`