将edittext限制为单行
Posted
技术标签:
【中文标题】将edittext限制为单行【英文标题】:restrict edittext to single line 【发布时间】:2012-06-14 05:40:02 【问题描述】:可能重复:android-singleline-true-not-working-for-edittext
<EditText
android:id="@+id/searchbox"
android:layout_
android:layout_
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
只有一行。即使用户按下“输入”,光标也不应该下到第二行。有人可以帮我做吗?
【问题讨论】:
使用android:singleLine=true
将 android:lines="1" 替换为 android:singleLine=true
。
true 必须用引号括起来“true”
由于 singleLine 已被弃用,您可以使用 maxLines = 1 和 inputType = text。
使用android:inputType="textVisiblePassword"
会解决问题
【参考方案1】:
使用android:maxLines="1"
和android:inputType="text"
您忘记了android:maxLines 属性。并参考android:inputType 你的例子,下面会给出这个结果:
<EditText
android:id="@+id/searchbox"
android:layout_
android:layout_
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>
【讨论】:
@Lukasz'Severiaan'Grela 在当前的 Eclipse IDE 中,没有显示弃用提示,并且 android:maxLines 不限制输入到一行 @Praveen:您能否提供参考,说明android:singleLine 已弃用?我在 API 23 上看不到它。我没有在文档中看到它,当我将它与23.0.1
SDK 一起使用时也没有收到任何警告
@ShobhitPuri 它没有被弃用。此外,这是一个编辑。我没有提到弃用。
自 API 级别 3 起已弃用。请参阅:developer.android.com/reference/android/R.attr.html#singleLine
如果你只使用android:maxLines="1" 是不行的。所以你需要同时使用android:inputType="text" 和maxlines -1。然后它会完美的工作【参考方案2】:
不推荐使用android:singleLine="true"
。
只需添加您的输入类型并将 maxline 设置为 1,一切都会正常工作
android:inputType="text"
android:maxLines="1"
【讨论】:
如果你不指定 inputType 它将不起作用是我发现的。 你的权利。 inputType="textMultiLine" 即使您将 max line 设置为 1,仍然会给您多行。 请注意,android:inputType="number"
已经有最多 1 行了。
如果我的文本视图很长并且我希望它是多行的,但不是换行符,这不起作用。
@htafoya 此代码 sn-p 用于制作单行编辑文本。但是,您可以在 SO 开始一个新问题。【参考方案3】:
android:singleLine
现已弃用。来自documentation:
此常量已在 API 级别 3 中弃用。
此属性已弃用。改用
maxLines
来更改静态文本的布局,并在inputType 属性中使用textMultiLine
标志来代替可编辑的文本视图(如果同时提供singleLine 和inputType,则inputType 标志将覆盖singleLine 的值)。
因此您可以设置 android:inputType="textEmailSubject"
或任何其他与字段内容匹配的值。
【讨论】:
如果您想要一个简单的行文本字段,请使用android:inputType="text"
。
谢谢@Mr. Bungle , textMultiLine 为我工作!【参考方案4】:
您必须在 xml 中的 EditText 中添加这一行:
android:maxLines="1"
【讨论】:
正如其他答案所指出的 - 这已被弃用,有利于maxLines
和 inputType
组合【参考方案5】:
android:maxLines="1"
android:inputType="text"
添加上面的代码以在布局中的 EditText 标记中添加一行。
android:singleLine="true" is deprecated
此常量在 API 级别 3 中已弃用。
此属性已弃用。改用 maxLines 来更改 静态文本的布局,并在 inputType 属性而不是可编辑的文本视图(如果两者 提供了 singleLine 和 inputType,inputType 标志将 覆盖 singleLine 的值)。
【讨论】:
【参考方案6】:现在android:singleLine
属性已被弃用。请将这些属性添加到您的 EditText
以使 EditText
成为单行。
android:inputType="text"
android:imeOptions="actionNext"
android:maxLines="1"
【讨论】:
【参考方案7】:我过去曾使用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;
);
【讨论】:
【参考方案8】:这将适用于 EditText:
android:inputType="text"
然后我会为输入文本设置一个最大长度:
android:maxLines="1"
这就是现在需要的 2 个。
【讨论】:
【参考方案9】:包括android:singleLine="true"
【讨论】:
【参考方案10】:每个人都在展示 XML 方式,除了一个人展示了调用 EditText 的 setMaxLines 方法。但是,当我这样做时,它没有用。对我有用的一件事是设置输入类型。
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。希望这一切对您有所帮助。
【讨论】:
【参考方案11】:以编程方式:
textView.setMaxLines(1);
【讨论】:
【参考方案12】:为了进行限制,您只需将单行选项设置为“true”即可。
android:singleLine="true"
【讨论】:
singleLine 已弃用! 完美运行。使用android:maxLines="1"
的用户仍然可以按 Enter 进入多行【参考方案13】:
使用
android:ellipsize="end"
android:maxLines="1"
【讨论】:
【参考方案14】:请试试这个代码
android:inputType="textPersonName"
【讨论】:
【参考方案15】:@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;
);
我希望这可以帮助任何尝试这样做的人。
【讨论】:
【参考方案16】:如果属性 android:inputType 是 textMultiLine 也很重要。如果是这样,属性 android:singleLine、android:imeOptions、android:ellipsize 和 android maxLines 将被忽略,并且您的 EditText 无论如何都会接受 MultiLines。
【讨论】:
【参考方案17】:将此行添加到您的编辑文本中
android:inputType="text"
【讨论】:
【参考方案18】:android:imeOptions="actionDone"
为我工作。
【讨论】:
【参考方案19】:使用下面的代码而不是您的代码
<EditText
android:id="@+id/searchbox"
android:layout_
android:layout_
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..."/>
【讨论】:
【参考方案20】:因为android:singleLine="true"
现在是Depreciated 所以使用
android:maxLines="1"
使用 maxLines 来更改静态文本的布局,并使用 inputType 属性中的 textMultiLine 标志代替可编辑的文本视图(如果同时提供了 singleLine 和 inputType,则 inputType 标志将覆盖 singleLine 的值)。
【讨论】:
【参考方案21】:在 XML 文件中在编辑文本中添加此属性
android:maxLines="1"
【讨论】:
【参考方案22】:您必须在 EditText 中添加这一行
android:maxLines="1"
还有一件事,别忘了设置android:inputType
(随便你,短信,电话……,但你必须设置)
【讨论】:
【参考方案23】:在 XML 文件中。只需添加
android:maxLines="1"
【讨论】:
【参考方案24】:对我来说,我是这样做的,转到你的 xml 文件中的 textView 并添加这两行
` android:maxLines="1"
android:inputType="text"`
【讨论】:
以上是关于将edittext限制为单行的主要内容,如果未能解决你的问题,请参考以下文章