2012-05-30 51 views
1

的EditText的背景顏色我想獲得的EditText的顏色,我可以setBackgroundColor設置它,但沒有getBackgroundColor功能如何獲得在Android

我發現這個

EditText edtxt; 
edtxt.setBackgroundColor(Color.GREEN); 
PaintDrawable drawable; 
Log.d(TAG,"1"); 
drawable = (PaintDrawable)edtxt.getBackground(); 
if(drawable.getPaint().getColor()==(int)Color.GREEN)......... 
Log.d(TAG,"2"); 

但其沒有工作,撞毀

05-29 19:20:27.526: E/AndroidRuntime(20255): Caused by: java.lang.ClassCastException: android.graphics.drawable.StateListDrawable cannot be cast to android.graphics.drawable.PaintDrawable 
+0

你爲什麼要這麼做? –

回答

0

如果要設置在運行時它的顏色可以更好地保存某種標誌(布爾爲例)知道哪個是編輯文字的背景色。

+0

我已經想過了,懶得宣佈標誌並且會讓代碼繞過它。 – alex6999

4

這應該適用於API級別11和高達

ColorDrawable drawable = (ColorDrawable)edtxt.getBackground(); 
if(drawable.getColor()==(int)Color.GREEN) 
System.out.println("It's Green"); 

如果你想讓它熱鍋上較早的API,我會建議使用自定義EditText並重寫setBackgroundColor(int color)方法。

public class NewEditText extends EditText { 
private int color; 
public NewEditText(Context context) { 
    super(context); 
    // TODO Auto-generated constructor stub 
} 

public NewEditText(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    // TODO Auto-generated constructor stub 
} 

public NewEditText(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
    // TODO Auto-generated constructor stub 
} 


@Override 
public void setBackgroundColor(int color) { 
    // TODO Auto-generated method stub 
    this.color=color; 
    super.setBackgroundColor(color); 
} 

public int getBackgroundColor() { 

    return color; 
} 
} 

現在在佈局中使用:

<com.aneesh.mypackage.NewEditText 
    android:layout_width="fill_parent" 
    android:id="@+id/customview" 
    android:layout_height="wrap_content"/> 

,你的活動代碼將變爲

NewEditText custView = (NewEditText)findViewById(R.id.customview); 
custView.setBackgroundColor(Color.GREEN); 
if(custView.getBackgroundColor()==(int)Color.GREEN) 
    System.out.println("It's green"); 
+0

我之前嘗試過,但是:方法getColor()未定義類型ColorDrawable – alex6999

+1

哦是的,該方法僅適用於API 11(HoneyComb及更高版本)。 [getColor()](http://developer.android.com/reference/android/graphics/drawable/ColorDrawable.html#getColor%28%29) – coderplus

+0

更新了答案:-) – coderplus