2014-02-21 49 views
0

我有一個EditText框,我想改變背景顏色,當字符數大於或等於4時,可繪製的左邊。如我在下面的代碼片段中看到的,我使用了TextWatcher以捕獲打字事件,並在背景顏色發生變化的時刻,但setCompoundDrawable不會更改EditText框中的可繪圖。 我做錯了什麼,或者是某種故障?EditText可繪製的左邊不會被改變

final EditText input = (EditText)view.findViewById(R.id.editText); 
    input.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) { } 

     @Override 
     public void onTextChanged(CharSequence charSequence, int start, int count, int after) { } 

     @Override 
     public void afterTextChanged(Editable editable) { 
       if(editable.length() <= 3){ 
        input.setBackgroundColor(getResources().getColor(R.color.edittext_background_red)); 
        input.setCompoundDrawables(getResources().getDrawable(R.drawable.ic_cross), null, null, null); 
       }else if(editable.length() >= 4){ 
        input.setBackgroundColor(getResources().getColor(R.color.edittext_background_green)); 
        input.setCompoundDrawables(getResources().getDrawable(R.drawable.ic_tick), null, null, null); 
       } 
     } 
    }); 
+0

如果有什麼(editable.length()== 3? – pskink

+0

改變之前調用在你的左邊繪製對象setBounds,但仍沒有運氣 – kabuto178

+0

嘗試setCompoundDrawablesWithIntrinsicBounds – pskink

回答

0

使用setCompoundDrawablesWithIntrinsicBounds(...)或致電setCompoundDrawables