我在我的活動中有幾個EditText。問題很簡單:如果他們都沒有焦點,我會顯示一個按鈕。如果他們中有任何人有焦點,我會隱藏按鈕。檢測是否沒有EditTexts有焦點
這裏就是我所做的:
usernameEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
usernameFocus = hasFocus;
adjustVisibility();
}
});
passwordEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
passwordFocus = hasFocus;
adjustVisibility();
}
});
private void adjustVisibility() {
if(usernameFocus || passwordFocus) {
button.setVisibility(View.GONE);
} else {
button.setVisibility(View.VISIBLE);
}
}
問題: 當我改變焦點從一個EditText上的其他按鈕獲得焦點變化之間暫時可見。我想消除這一點。有關如何實現它的任何建議?
當用戶填充的用戶名字段之後點擊密碼字段中的問題的進一步闡述:
BUTTON INVISIBLE
- 用戶名字段具有焦點
- 用戶名字段的
onFocusChange()
得到稱爲 - 用戶名字段丟失焦點
按鈕可見
- 密碼字段的
onFocusChange()
被調用 - 密碼域獲得焦點。
BUTTON INVISIBLE
顯然,點3和4之間,既不用戶名字段也不密碼字段具有焦點。在那小部分時間裏,按鈕變得可見,這正是我想要擺脫的。
問題仍然存在,因爲焦點變化之間,這個'adjustVisibility()'方法被調用兩次。延遲它只會使按鈕瞬間閃爍,以延長眨眼時間。按鈕現在顯示約5秒鐘:| –
@Akeshwar這是爲我工作。當你將焦點從一個變爲另一個edittext時,布爾變量的最後一個值爲true,所以你的按鈕被隱藏。現在如果你的焦點丟失了,那麼兩個都是錯誤的,所以按鈕顯示給最終用戶 –
當我從一個EditText切換到另一個時,方法'adjustVisibility()'被連續調用兩次,對吧?在第一次調用中,這兩個值都是錯誤的。因此,按鈕顯示。但第二個電話很快就會出現,其中一個值是真實的。因此該按鈕消失。所以,在這個轉換之間,按鈕確實顯示一次。這就是我的問題所在。 –