限制编辑文本为单行

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

285191 次浏览

包括android:singleLine="true"

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

你忘记了android: maxLines属性。在你的例子中,下面会给出这样的结果:

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

我在过去用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;
}
});

使用

android:ellipsize="end"
android:maxLines="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..."/>

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

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

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

所以你可以只设置android:inputType="textEmailSubject"或任何其他匹配字段内容的值。

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

我希望这篇文章能帮助到那些想做同样事情的人。

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

android: maxLines = " 1 "

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

为了限制你只需要设置单行选项为“真”。

android:singleLine="true"

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

android:maxLines="1"

另外,如果属性android:inputType是textMultiLine,注意这一点也很重要。如果是这样,属性android:singleLine, android:imeOptions, android:ellipsize和android maxLines将被忽略,你的EditText将接受MultiLines无论如何。

不建议使用android:singleLine="true"

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

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

将这一行添加到编辑文本中

android: inputType = "文本"

编程:

textView.setMaxLines(1);

每个人都展示了XML的方式,只有一个人展示了调用EditText的setMaxLines方法。然而,当我这样做的时候,它并没有起作用。对我来说有用的一件事是设置输入类型。

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

这允许A-Z、A-Z、0-9和特殊字符,但不允许按enter键。当您按enter键时,它将转到下一个GUI组件(如果在您的应用程序中适用的话)。

你可能还想设置可以放入EditText的最大字符数,否则它会把它右边的内容推到屏幕外,或者只是开始拖到屏幕外。你可以这样做:

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

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

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

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

android:singleLine="true" is deprecated

这个常量是空气污染指数3级中的弃用

该属性不支持。使用maxLines来更改 控件中的textMultiLine标志 inputType属性代替可编辑文本视图(如果两者都是 singleLine和inputType被提供,inputType标志将

.重写singleLine的值)

现在android:singleLine属性已弃用。请将这些属性添加到您的EditText中,以便EditText为单行。

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

这将适用于EditText:

android:inputType="text"

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

android:maxLines="1"

这是现在需要的两个。

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

 android:maxLines="1"
android:imeOptions="actionDone"

为我工作。

请试试这段代码

android:inputType="textPersonName"

必须在EditText中添加这一行

android:maxLines="1"

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

在XML文件。只需添加

android: maxLines = " 1 "

对我来说,我这样做,去你的textView在xml文件,并添加这两行

“android: maxLines =“1”;

android: inputType =“text"”