web-dev-qa-db-fra.com

Comment définir la propriété "Android: drawableTop" d'un bouton à l'exécution

Comment définir la propriété "Android:drawableTop" d'un bouton lors de l'exécution

57
Maneesh

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é.

127
Tanmay Mandal
Drawable top = getResources().getDrawable(R.drawable.image);
button.setCompoundDrawablesWithIntrinsicBounds(null, top , null, null);
43
Kirit Vaghela
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);

        }
    });
21
Gil

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);
}
2
KNU
        Button button = (Button) findViewById(R.id.button);
        button.setCompoundDrawables(left, top, right, bottom);
2
exception01
 btn.setBackgroundResource(R.drawable.your_image_name_here);
0
Nikita Yo LAHOLA

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)
}

setCompoundDrawablesRelativeWithIntrinsicBounds(left/start, top, right/end, bottom)

0
Aklesh Singh

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)
0
Albert Gao