Я пытаюсь создать элемент Spinner. Для этого я создал ресурс со списком слоев. Я использую стандартный ресурс библиотеки там @ drawable/abc_spinner_mtrl_am_alpha. Это стрелка, и она всегда отображает белый цвет. В api версии 21 в android, в spinner вы можете установить атрибут android: backgroundTint, но я не знаю, как это сделать в более ранних версиях.Изменение цвета ресурса NinePatchDrawable
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:bottom="4dp"
android:left="4dp"
android:right="4dp"
android:top="4dp" >
<shape android:shape="rectangle">
<stroke
android:color="#999"
android:width="1dp" />
<corners android:radius="2dip" />
<solid android:color="@android:color/transparent"/>
</shape>
</item>
<item android:id="@+id/notPressedSpinner"
android:drawable="@drawable/abc_spinner_mtrl_am_alpha"
android:right="4dp" />
</layer-list>
Я попытался изменить ресурс программным путем с помощью setColorFilter, но он не работает.
Drawable abcSpinnerMtrlAmAlpha = mContext.getResources()
.getDrawable(R.drawable.abc_spinner_mtrl_am_alpha);
Drawable abcSpinnerMtrlAmAlpha2 = mContext.getResources()
.getDrawable(R.drawable.abc_spinner_mtrl_am_alpha);
abcSpinnerMtrlAmAlpha.setColorFilter(mContext.getResources().getColor(R.color.gray_color),
PorterDuff.Mode.SRC_ATOP);
abcSpinnerMtrlAmAlpha2.setColorFilter(mContext.getResources().getColor(R.color.green),
PorterDuff.Mode.SRC_ATOP);
LayerDrawable x = ((LayerDrawable)mContext.getResources().getDrawable(R.drawable.x));
LayerDrawable y = ((LayerDrawable)mContext.getResources().getDrawable(R.drawable.y));
x.setDrawableByLayerId(R.id.notPressedSpinner, abcSpinnerMtrlAmAlpha);
y.setDrawableByLayerId(R.id.notPressedSpinner, abcSpinnerMtrlAmAlpha2);