定義選擇,我有以下選擇:代碼
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="#00000" />
<corners android:radius="10dp" />
<stroke android:width="5px" android:color="#FFFFFF" />
</shape>
</item>
</selector>
,我想在代碼中定義。我設法儘量來,因爲這:
StateListDrawable states = new StateListDrawable();
float[] roundedCorner = new float[] { 10, 10, 10, 10, 10, 10, 10, 10 };
float[] innerRoundedCorner = new float[] { 5, 5, 5, 5, 5, 5, 5, 5 };
RectF inset = new RectF(5, 5, 5, 5);
RoundRectShape round = new RoundRectShape(roundedCorner, inset, innerRoundedCorner);
ShapeDrawable shape = new ShapeDrawable(round);
shape.getPaint().setColor(Color.WHITE);
states.addState(new int[] {}, shape);
button.setBackgroundDrawable(states);
這給了我一個白邊的按鈕,但我無法設置按鈕的背景顏色。 這是如何在代碼中實現的?
你爲什麼不使用標準的Android狀態代碼從'機器人.R.attr.state_XXX'? – teoREtik
而且它是否正確設置'shape'對象而不是'狀態'對象爲BackgroundDrawable? – teoREtik
@teoREtik android.R.attr.state只定義您設置Drawable的狀態,我希望能夠根據某些條件更改代碼中的顏色。所以我需要一種方法來繪製代碼。 – Drejc