Comment définir la propriété "Android:drawableTop
" d'un bouton lors de l'exécution
Utilisation
button.setCompoundDrawablesWithIntrinsicBounds(left, top, right, bottom);
Définit les Drawables (le cas échéant) pour qu’ils apparaissent à gauche, en haut, à droite et en dessous du texte. Utilisez 0 si vous ne voulez pas de Drawable ici. Les limites de Drawables seront définies sur leurs limites intrinsèques.
Si tu utilises
button.setCompoundDrawables(left, top, right, bottom);
Définit les Drawables (le cas échéant) pour qu’ils apparaissent à gauche, en haut, à droite et en dessous du texte. Utilisez null si vous ne voulez pas de Drawable ici. Les Drawables doivent déjà avoir setBounds (Rect) appelé.
Drawable top = getResources().getDrawable(R.drawable.image);
button.setCompoundDrawablesWithIntrinsicBounds(null, top , null, null);
final Drawable drawableTop = getResources().getDrawable(R.drawable.btn_check_buttonless_on);
btnByCust.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
btnByCust.setCompoundDrawablesWithIntrinsicBounds(null, drawableTop , null, null);
}
});
J'utilise ce code pour utiliser le bouton "Theme.Holo" avec une "image personnalisée" à gauche et le changer (l'image) avec une fonction appelée de différentes manières.
protected void app_dibujarLogojuego() {
if(bitmaplogojuego!=null){
bitmaplogojuego.recycle();
bitmaplogojuego=null;
}
Drawable LOGO = null;
if(verjuego.equals("COSA1")){ LOGO = getResources().getDrawable(R.drawable.img_logo_COSA1); }
if(verjuego.equals("COSA2")){ LOGO = getResources().getDrawable(R.drawable.img_logo_COSA2); }
if(verjuego.equals("COSA3")){ LOGO = getResources().getDrawable(R.drawable.img_logo_COSA3); }
if(verjuego.equals("COSA4")){ LOGO = getResources().getDrawable(R.drawable.img_logo_COSA4); }
BUTTON_DECLARED_ID.setCompoundDrawablesWithIntrinsicBounds(LOGO, null , null, null);
}
Button button = (Button) findViewById(R.id.button);
button.setCompoundDrawables(left, top, right, bottom);
btn.setBackgroundResource(R.drawable.your_image_name_here);
Créez une fonction d'extension comme celle-ci et réglez _ drawable
comme ceci
tvAccepted.setTopDrawable(R.drawable.ic_preparing_order_active)
fun TextView.setTopDrawable(icon: Int) {
this.setCompoundDrawablesRelativeWithIntrinsicBounds(0,icon,0,0)
}
où
setCompoundDrawablesRelativeWithIntrinsicBounds(left/start, top, right/end, bottom)
Si vous utilisez Kotlin, vous pouvez utiliser la méthode d'extension pour rendre les choses plus élégantes.
fun TextView.setDrawableTop(iconId: Int) {
val icon = this.context?.resources?.getDrawable(iconId)
this.setCompoundDrawablesWithIntrinsicBounds(null, icon, null, null)
}
Ensuite, vous pouvez l'utiliser comme ceci:
// myTextView: TextView
myTextView.setDrawableTop(R.drawable.ic_happy)