将edittext限制为单行

Pan*_*hal 294 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>
Run Code Online (Sandbox Code Playgroud)

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

Pra*_*mar 517

使用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>
Run Code Online (Sandbox Code Playgroud)

  • @Lukasz'Severiaan'Grela在当前的Eclipse IDE中,没有显示弃用提示,而android:maxLines不会将输入限制为一行 (17认同)
  • 使用singleline = true (8认同)
  • 从API级别3开始不推荐使用.请参阅:http://developer.android.com/reference/android/R.attr.html#singleLine (5认同)
  • @Praveen:您能否提供参考资料,说明 [android:singleLine](http://developer.android.com/reference/android/widget/TextView.html#attr_android:singleLine) 已被弃用?我在 API 23 中看不到它。我在文档中没有看到它,而且当我将它与 `23.0.1` SDK 一起使用时也没有收到任何警告 (2认同)
  • 如果仅使用android:maxLines =“ 1”将不起作用。因此,您需要同时使用android:inputType =“ text”和maxlines -1。然后它将完美地工作 (2认同)

ral*_*abb 188

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

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

android:inputType="text"
android:maxLines="1"
Run Code Online (Sandbox Code Playgroud)

  • 如果你没有指定inputType它将无法正常工作. (78认同)
  • 你的权利.即使将max line设置为1,inputType ="textMultiLine"仍会为您提供多行. (10认同)
  • 请注意,对于`android:inputType ="number"`,已经有最多1行. (2认同)

Mr.*_*gle 54

android:singleLine现已弃用.从文档:

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

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

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

  • 如果你想要一个简单的行文本字段,请使用`android:inputType ="text"`. (29认同)

小智 18

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

android:maxLines="1"
Run Code Online (Sandbox Code Playgroud)

  • 正如其他答案所指出的那样 - 已经弃用了这个'maxLines`和`inputType`组合 (3认同)

小智 14

android:maxLines="1"
android:inputType="text"
Run Code Online (Sandbox Code Playgroud)

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

android:singleLine="true" is deprecated
Run Code Online (Sandbox Code Playgroud)

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

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


Kau*_*hik 12

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

android:inputType="text"
android:imeOptions="actionNext"
android:maxLines="1"
Run Code Online (Sandbox Code Playgroud)


Ale*_*s G 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;
    }
});
Run Code Online (Sandbox Code Playgroud)


Ray*_*ter 11

这适用于EditText:

android:inputType="text"
Run Code Online (Sandbox Code Playgroud)

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

android:maxLines="1"
Run Code Online (Sandbox Code Playgroud)

这些是现在需要的2.


Vip*_*hah 6

包括 android:singleLine="true"


Pet*_*fin 5

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

EditText editText = new EditText(this);
editText.setInputType(InputType.TYPE_CLASS_TEXT);
Run Code Online (Sandbox Code Playgroud)

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

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

InputFilter[] filters = new InputFilter[1];
filters[0] = new InputFilter.LengthFilter(8);
editText.setFilters(filters);
Run Code Online (Sandbox Code Playgroud)

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


Gia*_*ran 5

您必须在 EditText 中添加此行

android:maxLines="1"
Run Code Online (Sandbox Code Playgroud)

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