webentwicklung-frage-antwort-db.com.de

So legen Sie die Eigenschaft "Android: drawableTop" einer Schaltfläche zur Laufzeit fest

So legen Sie die Eigenschaft "Android:drawableTop" einer Schaltfläche zur Laufzeit fest

57
Maneesh

Benutzen

button.setCompoundDrawablesWithIntrinsicBounds(left, top, right, bottom);

Legt fest, dass die Drawables (falls vorhanden) links über, rechts über und unter dem Text angezeigt werden. Verwenden Sie 0, wenn Sie dort kein Drawable möchten. Die Grenzen der Drawables werden auf ihre inneren Grenzen gesetzt.

Wenn du benutzt

button.setCompoundDrawables(left, top, right, bottom);

Legt fest, dass die Drawables (falls vorhanden) links über, rechts über und unter dem Text angezeigt werden. Verwenden Sie null, wenn Sie dort kein Drawable möchten. Die Drawables müssen bereits setBounds (Rect) aufgerufen haben.

124
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

Ich verwende diesen Code, um die Schaltfläche "Theme.Holo" mit einem "Benutzerdefinierten Bild" auf der linken Seite zu verwenden und das Bild (das Bild) mit einer Funktion zu ändern, die auf verschiedene Arten aufgerufen wird.

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

Erstellen Sie eine solche Erweiterungsfunktion und setzen Sie top drawable so

tvAccepted.setTopDrawable(R.drawable.ic_preparing_order_active)

fun TextView.setTopDrawable(icon: Int) {
    this.setCompoundDrawablesRelativeWithIntrinsicBounds(0,icon,0,0)
}

woher

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

0
Aklesh Singh

Wenn Sie Kotlin verwenden, können Sie die Erweiterungsmethode verwenden, um die Dinge elegant aussehen zu lassen.

fun TextView.setDrawableTop(iconId: Int) {
    val icon = this.context?.resources?.getDrawable(iconId)
    this.setCompoundDrawablesWithIntrinsicBounds(null, icon, null, null)
}

Dann kannst du es so benutzen:

// myTextView: TextView
myTextView.setDrawableTop(R.drawable.ic_happy)
0
Albert Gao