Je lis dans certaines données d'une API REST et j'ai besoin de générer des boutons basés sur les informations que l'application reçoit. Parce que j'ai besoin des mêmes boutons dans de nombreux écrans d'activité j'ai étendu Button pour faire un RachelButton et je l'ai mis en place dans le constructeur.Android - Comment programmer la couleur des boutons
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
}
});
}
Ensuite, un exemple de la ressource que je utilise pour générer un bouton de couleur est la suivante:
<?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>
Comme vous pouvez le voir dans le code que je suis en train de la couleur du texte et je suis sûr que cette couleur existe en tant que ressource (merci IntelliJ). Mais le réglage de la couleur du texte n'a aucun effet, la couleur du texte sur le bouton semble être une nuance plus foncée de la couleur d'arrière-plan du bouton.
Si quelqu'un pouvait me donner quelques conseils sur ce qu'il faut essayer, je serais très reconnaissant.
Vous devriez jeter un oeil à thèmes Android et de styles. Ils vous permettent d'appliquer la même apparence à un, plusieurs ou tous les éléments d'interface utilisateur de différents types. –
Je viens de commencer à lire à ce sujet. – Rachel