禁用Android中EditText的回车键

41

我有一个EditText但是我只想要一行,请这样设置

<item name="android:maxLines">1</item>
<item name="android:minLines">1</item>
<item name="android:lines">1</item>

但是并没有起作用。

在这里输入图片描述

看看我的代码:

<LinearLayout style="@style/linearInputEntryText">
    <LinearLayout  style="@style/subLinearLayout">
        <TextView style="@style/label" android:text="Last Name" android:id="@+id/textView2"/>
        <EditText style="@style/editTextEntryName" android:id="@+id/lastName"/>
    </LinearLayout>
    <View style="@style/linearInputEntryBlack" > </View>
</LinearLayout>

和样式:

<style name="editTextEntryName" parent="editTextEntry">
    <item name="android:maxLines">1</item>
    <item name="android:minLines">1</item>
    <item name="android:lines">1</item>
    <item name="android:layout_gravity">left</item>
</style>

我认为只有使用inputType multiline才能实现这一点。 - Thomas R.
2
android:singleLine=true 设置给你的 EditText - Rustam
请添加 android:inputType="text" 和 android:singleLine="true"。 - Arun Shankar
1
android:singleLine已被弃用,使用它不是一个好的实践。 - Gabriella Angelova
1
@GabriellaAngelova,你能提供你找到这些信息的任何官方参考资料吗? - Aritra Roy
1
@AritraRoy 你是对的。我没有看到任何地方标明 singleLine 已经被弃用。 - IntelliJ Amiya
10个回答

90

android:maxLines="1" 允许文本为多行,但限制edittext的高度以显示单行。

如果您想禁用回车(换行)键,请将输入类型设置为文本。

    android:inputType="text"

1
那是正确的答案!如果您想要多行支持,请使用 android:inputType="textMultiLine" - Reza Bigdeli
1
太好了!android:singleLine已被弃用。 - Tommy

57

由于 Android 版本的不同,最佳实践是同时包含这些参数:

         android:maxLines="1"
         android:lines="1"
         android:singleLine="true"
如果您不这样做,它在某些设备上将无法正常工作。

5
这些答案似乎已经过时。显然,一个简单的解决方法是使用 android:inputType="text" 或其衍生类型之一:android:inputType="textCapWords"。它们会清除默认开启的位 InputType.TYPE_TEXT_FLAG_MULTI_LINE - Phlip
这不会禁用回车键。 - Tigran Babajanyan

25

请使用

android:singleLine="true"

取代

    <item name="android:maxLines">1</item>
    <item name="android:minLines">1</item>
    <item name="android:lines">1</item>

只需添加一个属性,就可以使您的EditText仅接受一行文本并禁用回车按钮。

更新

不必担心此注释,

android:singleLine已弃用,使用它不是一个好习惯

这个属性得到了官方支持,且绝不会被弃用。同时它也保证能在所有设备和Android版本上正常工作。


2
如果您的问题已经解决,请点赞并接受它。 - Aritra Roy
我的答案有什么问题,为什么没有被接受? - Aritra Roy
1
这是正确的,但并不是说应该使用singleLine参数而不是你列出的其他参数。它们都应该一起使用,否则在某些设备上TextView会表现不正常。我亲眼见过,这不是一个“可能”的警告。 - Kelevandos
@AritraRoy,现在singleLine可以使用,但max lines不能,我需要了解什么?一个已弃用的wtt可以工作,但一个功能性的却不行。你有什么想法吗? - Muhammed Refaat
你可以删除这个回答 - user924

8

You may use

<EditText 
   ......
   android:imeOptions="actionNext" OR "actionDone" />

你能详细说明一下吗?你想要实现什么,为什么这个解决方案会起作用? - SMBiggs

5

使用XML属性

<EditText
    ......
    android:inputType="text" />

3

这对我有用,

通过在我的onCreateView中为editText设置onKeyListener -

editText.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            return (keyCode == KeyEvent.KEYCODE_ENTER);
        }
});

编辑:如果您正在使用Android默认键盘,则此方法可能无效。


2

android:singleLine现在已经被弃用。 - Cyb3rKo

2

如果您想使用Java,可以这样做:

    edittext1.setSingleLine();

1
使用 android:singleLine="true" 属性。
     <EditText 
       ......
       android:singleLine="true"
       android:id="@+id/lastName"/>

-1
你可以将输入类型设置为textEmailSubject。 我遇到了同样的问题,然后解决了它!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接