我有一個XML文件中定義的背景的EditText
:如何從GradientDrawable獲取顏色?
<EditText
android:id="@+id/myEditText"
style="@style/Theme.x.EditText.ReadOnly"
android:layout_marginRight="5dip"
android:layout_span="7"
android:nextFocusDown="@+id/myEditText2"
android:selectAllOnFocus="true" />
xml文件:my_edit_text.xml
:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="@android:color/background_dark" android:endColor="@android:color/background_dark"
android:angle="0"/>
<solid android:color="#FA0000"/>
<stroke android:width="1px" android:color="#5A5D5A"/>
<corners
android:bottomLeftRadius="3dip"
android:topLeftRadius="3dip"
android:bottomRightRadius="3dip"
android:topRightRadius="3dip"
android:color="@color/crAmarelo"/>
<padding
android:left="5dip"
android:right="5dip"/>
</shape>
,我需要得到該視圖有顏色:
EditText et = (EditText) solo.getView(R.id.myEditText);
GradientDrawable gd = (GradientDrawable) et.getBackground();
但我不知道如何從GradientDrawable
獲得純色。
漸變是顏色之間的插值 - 不是一個單一的顏色。除非您指定視圖的特定像素,否則嘗試獲取View的整體顏色(如果它是漸變的)是沒有意義的。如果您正在談論「純色」,那不是'GradientDrawable',而是''Shape''標籤定義的'ShapeDrawable'的一個屬性。 – kcoppock 2014-09-12 21:40:02
@ kcoppock是的,我正在談論'固體'顏色。當我嘗試這個:'EditText et =(EditText)solo.getView(R.id.myEditText); ShapeDrawable sd =(ShapeDrawable)et.getBackground();'我有一個錯誤'java.lang.ClassCastException:android.graphics.drawable.GradientDrawable不能轉換爲android.graphics.drawable.ShapeDrawable' – Daniane 2014-09-15 12:52:12