【问题标题】:restrict edittext to single line将edittext限制为单行
【发布时间】:2012-06-14 05:40:02
【问题描述】:

可能重复: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 只有一行。即使用户按下“输入”,光标也不应该下到第二行。有人可以帮我做吗?

【问题讨论】:

  • 使用android:singleLine=true
  • 将 android:lines="1" 替换为 android:singleLine=true
  • true 必须用引号括起来“true”
  • 由于 singleLine 已被弃用,您可以使用 maxLines = 1 和 inputType = text。
  • 使用android:inputType="textVisiblePassword"会解决问题

标签: android android-edittext


【解决方案1】:

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

【讨论】:

  • @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_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..."/>
                            

                            【讨论】:

                              【解决方案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"`

                                      【讨论】:

                                        猜你喜欢
                                        • 1970-01-01
                                        • 2011-07-09
                                        • 2015-03-23
                                        • 2015-08-12
                                        • 1970-01-01
                                        • 1970-01-01
                                        • 1970-01-01
                                        • 2019-09-19
                                        相关资源
                                        最近更新 更多