您好,登錄后才能下訂單哦!
在Android開發(fā)中,使用EditText進行文本輸入是一種常見的交互方式
android:id="@+id/edit_text_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textEmailAddress" />
android:id="@+id/edit_text_username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLength="20" />
editTextUsername.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// 檢查用戶名可用性
checkUsernameAvailability(s.toString());
}
@Override
public void afterTextChanged(Editable s) {
}
});
private final Handler handler = new Handler();
private final Runnable textChangedRunnable = new Runnable() {
@Override
public void run() {
// 執(zhí)行操作,如網(wǎng)絡請求
}
};
editTextSearch.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
handler.removeCallbacks(textChangedRunnable);
handler.postDelayed(textChangedRunnable, 500); // 500ms延遲
}
@Override
public void afterTextChanged(Editable s) {
}
});
InputFilter filter = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
for (int i = start; i < end; i++) {
if (!Character.isLetterOrDigit(source.charAt(i))) {
return "";
}
}
return null;
}
};
editText.setFilters(new InputFilter[]{filter});
setError()
方法顯示錯誤提示。例如:if (password.length() < 6) {
editTextPassword.setError("密碼長度至少為6位");
} else {
editTextPassword.setError(null);
}
onSaveInstanceState()
方法中保存狀態(tài):@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("edit_text_content", editText.getText().toString());
outState.putInt("edit_text_selection", editText.getSelectionStart());
}
然后在onCreate()
方法中恢復狀態(tài):
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText editText = findViewById(R.id.edit_text);
if (savedInstanceState != null) {
editText.setText(savedInstanceState.getString("edit_text_content"));
editText.setSelection(savedInstanceState.getInt("edit_text_selection"));
}
}
通過以上實踐,你可以優(yōu)化EditText在Android中的文本輸入體驗。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。