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

【讨论】:

正如其他答案所指出的 - 这已被弃用,有利于 maxLinesinputType 组合【参考方案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限制为单行的主要内容,如果未能解决你的问题,请参考以下文章

如何在多行上获取edittext文本[关闭]

如何限制 EditText 输入只允许 3 位整数或小数

Android EditText 限制输入为ip类型

如何在 Android 中使用 InputFilter 限制 EditText 中的字符?

王立平--EditText实现单行显示,左側图标,提示信息

如何给更多的EditText字段一种单行的感觉