簡體   English   中英

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

[英]how to set maximum and minimum character of a EditText field?

設置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
        }

對於最低要求,您可以執行以下操作:

使用.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);
        }
    }
}

}

您需要使用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,並可能導致無限循環

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM