【问题标题】:How do you set the max number of characters for an EditText in Android?如何在 Android 中设置 EditText 的最大字符数?
【发布时间】:2011-08-29 07:14:49
【问题描述】:

如何设置 Android EditText 输入的最大字符数?我看到了 setMaxLines、setMaxEMS,但没有看到字符数。

【问题讨论】:

标签: android android-edittext


【解决方案1】:

在 XML 中,您可以将此行添加到 EditText View 其中 140 是最大字符数:

android:maxLength="140"

【讨论】:

  • 你能指导我如何通过使用 Eclipse 的 xml 图形视图中的属性选项卡来实现这一点吗?
  • @NiteshVerma 在你的 res/layout xml 文件中放下一个 '
【解决方案2】:

动态:

editText.setFilters(new InputFilter[] { new InputFilter.LengthFilter(MAX_NUM) });

通过 xml:

<EditText
    android:maxLength="@integer/max_edittext_length"

【讨论】:

    【解决方案3】:

    你可以使用 InputFilter,就是这样:

    EditText myEditText = (EditText) findViewById(R.id.editText1);
    InputFilter[] filters = new InputFilter[1];
    filters[0] = new InputFilter.LengthFilter(10); //Filter to 10 characters
    myEditText .setFilters(filters);
    

    【讨论】:

      【解决方案4】:

      我总是这样设置最大值:

          <EditText
              android:id="@+id/edit_blaze_it
              android:layout_width="0dp"
              android:layout_height="@dimen/too_high"
      
          <!-- This is the line you need to write to set the max-->
              android:maxLength="420"
              />
      

      【讨论】:

        【解决方案5】:

        它对我有用。

            etMsgDescription.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maximum_character)});
        
            etMsgDescription.addTextChangedListener(new TextWatcher() {
        
                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
        
                    tvCharacterLimite.setText(" "+String.valueOf(maximum_character - etMsgDescription.getText().length()));
                }
        
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count,
                        int after) {
                    // TODO Auto-generated method stub
        
                }
        
                @Override
                public void afterTextChanged(Editable s) {
                    // TODO Auto-generated method stub
        
                }
            });
        

        【讨论】:

          【解决方案6】:
             <EditText
                  android:id="@+id/edtName"
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:hint="Enter device name"
                  android:maxLength="10"
                  android:inputType="textFilter"
                  android:singleLine="true"/>
          

          InputType 必须设置“textFilter”

                  android:inputType="textFilter"
          

          【讨论】:

            【解决方案7】:

            在任何地方都可以轻松使用此功能:

             public static void setEditTextMaxLength(EditText editText, int length) {
                InputFilter[] FilterArray = new InputFilter[1];
                FilterArray[0] = new InputFilter.LengthFilter(length);
                editText.setFilters(FilterArray);
              }
            

            【讨论】:

              【解决方案8】:

              科特林方式

              editText.filters = arrayOf(InputFilter.LengthFilter(maxLength))
              

              【讨论】:

                【解决方案9】:

                这种方式对我有用,这是我发现的最好的。 它的最大长度为 200 个字符

                editObservations.addTextChangedListener(new TextWatcher() {
                
                    @Override
                    public void onTextChanged(CharSequence s, int start, int before, int count) {
                        if (editObservations.getText().length() >= 201){
                                String str = editObservations.getText().toString().substring(0, 200);
                                editObservations.setText(str);
                                editObservations.setSelection(str.length());
                        }
                    }
                
                    @Override
                    public void beforeTextChanged(CharSequence s, int start, int count,
                                                          int after) {
                    }
                
                    @Override
                    public void afterTextChanged(Editable s) {
                    }
                });
                

                【讨论】:

                  【解决方案10】:

                  显然,您可以在 xml 或 InputFilter.LengthFilter 中使用 maxLength,如上所述。但在某些情况下,对我来说,这还不够。我为 EditText 的更灵活设置创建了一个类:https://github.com/devapro/NumberWatcher 它仅适用于数字输入,但您可以为任何类型更改它。

                  【讨论】:

                    【解决方案11】:

                    它不适用于带有 maxLenght 的 XML 我用了这段代码,你可以限制字符数

                    String editorName = mEditorNameNd.getText().toString().substring(0, Math.min(mEditorNameNd.length(), 15));

                    【讨论】:

                      【解决方案12】:

                      您可以向提交或更改事件添加验证挂钩。

                      if (EditText.length() <=10){
                                  Toast.makeText(MainAcitvity.this, "Enter Valid Number", Toast.LENGTH_SHORT).show();
                                  contact.setError("Enter Valid");
                                  return false;
                              }
                      

                      【讨论】:

                      • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
                      猜你喜欢
                      • 2013-07-30
                      • 1970-01-01
                      • 2012-05-07
                      • 1970-01-01
                      • 1970-01-01
                      • 2017-01-05
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多