如何设置EditText字段的最大和最小字符?

时间:2017-06-29 15:46:34

标签: android

设置EditText字段的最大和最小长度,该字段在用户键入时检查其长度并通知用户(如红色EditText行或不弹入键入的小弹出窗口)。我不知道这个编码应该是在xml还是java文件上。

以用户名为例: xml文件

<EditText
    android:id="@+id/etusername"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:hint="Username"
    android:inputType="textPersonName"
    android:maxLength="25"       
    android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"/>

.java文件

EditText etUsername=(EditText) findViewById(R.id.etusername);
String username=etUsername.getText().toString();
btnRegister.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
             //any operation here
        }

2 个答案:

答案 0 :(得分:3)

对于最低要求,您可以执行以下操作:

使用.getText().toString().length()选择最小长度

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private EditText myEditText;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    myEditText = (EditText) findViewById(R.id.myEditText);
    Button button = (Button) findViewById(R.id.button);
    int lenght = 25;
    myEditText.setFilters(new InputFilter[] {new InputFilter.LengthFilter(lenght)});
    button.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    int i = v.getId();
    if (i == R.id.button) {
        if (myEditText.getText().toString().length() < 4) {
            myEditText.setError("4 char minimum!");
        } else {
            myEditText.setError(null);
        }
    }
}

}

答案 1 :(得分:0)

您需要使用TextWatcher来查看长度

etUsername.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(final CharSequence s, final int start, final int count, final int after) {

        }

        @Override
        public void onTextChanged(final CharSequence s, final int start, final int before, final int count) {

        }

        @Override
        public void afterTextChanged(final Editable s) {
          if(s.toString.length > MAX){
              /// Your code here
          }
        }
    });

这将允许用户继续键入字段,但可以让您手动控制错误状态。请注意,如果您手动调用

etUsername.setText("...");

它将重新触发TextWatcher并导致无限循环