Я читаю в некоторых данных из API REST и потребности генерировать некоторые кнопки на основе информации, которую получает приложение.
Поскольку мне нужны те же кнопки на многих экранах Действия, я расширил Кнопку для создания RachelButton, и я настроил ее в конструкторе.
public RachelButton(Context context, Info info) {
super(context);
this.info= info;
setText(info.getTime());
setTypeface(Typeface.DEFAULT, Typeface.BOLD);
int identifier = 0;
if(info.isAvailable()){
identifier = getContext().getResources().getIdentifier("drawable/info_button_"+info.getType(), null, getContext().getPackageName());
}else{
identifier = R.drawable.info_button_unavailable;
}
if(identifier == 0){
Log.e("INFO_BUTTON", "no button for "+info.getType());
}
setBackgroundResource(identifier);
setTextColor(R.color.info_button_text_color);
setOnClickListener(new View.OnClickListener(){
public void onClick(View view) {
//do stuff
}
});
}
Затем пример ресурса, который я использую для генерации цветной кнопки, является этим:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape>
<gradient
android:startColor="@color/button_pressed"
android:endColor="@color/button_pressed"
android:angle="270" />
<stroke
android:width="3dp"
android:color="@color/button_pressed" />
<corners
android:radius="3dp" />
<padding
android:left="5dp"
android:top="5dp"
android:right="5dp"
android:bottom="5dp" />
</shape>
</item>
<item android:state_focused="true" >
<shape>
<gradient
android:endColor="@color/info_normal"
android:startColor="@color/info_normal"
android:angle="270" />
<stroke
android:width="3dp"
android:color="@color/info_normal" />
<corners
android:radius="3dp" />
<padding
android:left="5dp"
android:top="5dp"
android:right="5dp"
android:bottom="5dp" />
</shape>
</item>
<item>
<shape>
<gradient
android:endColor="@color/info_normal"
android:startColor="@color/info_normal"
android:angle="270" />
<stroke
android:width="3dp"
android:color="@color/info_normal" />
<corners
android:radius="3dp" />
<padding
android:left="5dp"
android:top="5dp"
android:right="5dp"
android:bottom="5dp" />
</shape>
</item>
</selector>
Как Вы видите в коде, я устанавливаю цвет текста, и я уверен, что этот цвет существует как ресурс (спасибо IntelliJ).
Но установка цвета текста как это не имеет никакого эффекта вообще, цвет текста на кнопке, кажется, более темный оттенок цвета фона кнопки.
Если кто-либо мог бы дать мне некоторый совет относительно того, что попробовать затем, я буду самым благодарным.
Вам следует сделать:
setTextColor(getContext().getResources().getColor(R.color.info_button_text_color));