2013-03-15 105 views
1

我試圖編輯一個按鈕的背景,具體取決於EditText中文本的長度。如果文本的長度爲0,則背景應該是半透明的,否則應該是不透明的。但是,我無法動態更新Button的背景。如果我點擊屏幕上的其他位置,則會更新按鈕的背景,但不會實時更新。無法更新addTextChangedListener()中的視圖

這是我使用的代碼。

emailEditText.addTextChangedListener(new TextWatcher(){ 

     public void afterTextChanged(Editable s) { 
      // TODO Auto-generated method stub 
     } 

     public void beforeTextChanged(CharSequence s, int start, int count, 
       int after) { 
      // TODO Auto-generated method stub 
     } 

     public void onTextChanged(CharSequence s, int start, int before, 
       int count) { 

      if(s.length()!=0){ 
       submitEmail.getBackground().setAlpha(255); 
      } 
      else{ 
       submitEmail.getBackground().setAlpha(45); 
      } 


     } 

    }); 

任何幫助將不勝感激。

+0

你試過submitEmail.requestLayout() – Naveen 2013-03-15 06:28:23

+0

試試這個:http://stackoverflow.com/a/8643545/450534。這不是在「TextWatcher」中設置Alpha的解決方案,而是用於設置Alpha本身。 – 2013-03-15 06:33:27

+0

謝謝納文。我嘗試過'submitEmail.requestLayout()',但它不能幫助我解決問題。 – 2013-03-15 06:36:40

回答

1

請不要呼叫設定值後

public void onTextChanged(CharSequence s, int start, int before, 
      int count) { 

     if(s.length()!=0){ 
      submitEmail.getBackground().setAlpha(255); 
     } 
     else{ 
      submitEmail.getBackground().setAlpha(45); 
     } 

     submitEmail.invalidate(); 

    }