[英]onEditorAction in android
我的布局中有兩個EditTexts和一個Button
一個名為UserName的EditText,另一個稱為Password的按鈕,而Button稱為Login。
一開始按鈕被禁用
我想要的是,無論何時在EditText用戶名和密碼中輸入任何內容,都應啟用按鈕
這是我嘗試過的
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event)
{
if(!TextUtils.isEmpty(UserName.getText()) && !TextUtils.isEmpty(PassWord.getText()))
{
Login.setEnabled(true);
return true;
}
return false;
當我運行此代碼時,“登錄按鈕”開始為禁用狀態,當我在兩個EditText中都輸入內容而不單擊“輸入”按鈕時,該按鈕保持禁用狀態
它僅在單擊“輸入”按鈕時有效
單擊鍵盤中的任何按鈕並且兩個EditText都不為空時,有沒有辦法使其工作
感謝幫助
當文本中的事件發生更改時,可以將TextChangedListener
類用於EditTexts
來偵聽事件。 在我的一個項目中,我有一個代碼:
private boolean heightFilled;
private boolean weightFilled;
private void setInputListeners() {
etHeight.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) {
heightFilled = s.length() > 0;
calculateButton.setEnabled(heightFilled && weightFilled);
}
@Override
public void afterTextChanged(Editable s) {
}
});
etWeight.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) {
weightFilled = s.length() > 0;
calculateButton.setEnabled(heightFilled && weightFilled);
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
如果您更改Button
和EditText
的名稱,則此方法應該起作用。
您需要使用文本更改的偵聽器。 從那里,您可以檢查是否鍵入,並且在檢查之后都具有用於激活按鈕的輸入代碼和呼叫代碼。
editText.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) {
}
@Override
public void afterTextChanged(Editable s) {
//enter code here to check if your edittexts have content
//then do stuff with your button
}
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.