[英]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.