可能重复: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
只有一行。即使用户按下“输入”,光标也不应该下到第二行。有人可以帮我这么做吗?
答案 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
属性。请将这些属性添加到EditText
,EditText
为单行。
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来改变静态文本的布局,并使用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)
在“编辑文本”中添加此属性
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”`