3 Stimmen

Android - Wie kann ich die Breite meines ImageButtons programmatisch ändern?

Ich habe einen ImageButton. Der Code ist -

ImageButton shareButton = new ImageButton(this);
shareButton.setBackgroundResource(android.R.drawable.ic_menu_share);

RelativeLayout.LayoutParams shareParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
shareParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, navigationLogo.getId());

shareButton.setLayoutParams(shareParams);

Ich muss seine Breite ändern. Aber es gibt keine setWidth-Methode sowohl in ImageButton als auch die Layout-Parameter. Suchte eine Menge online ohne eine Antwort.

8voto

Micah Hainline Punkte 14229

Anstatt RelativeLayout.WRAP_CONTENT für die Breite zu verwenden, können Sie eine tatsächliche Zahl verwenden, die die neue Breite der Schaltfläche in Pixeln ist. Da Sie die Breite in dp wahrscheinlich auflösungsunabhängig angeben möchten, müssen Sie dp wahrscheinlich mit einer Methode wie der folgenden in Pixel umwandeln:

public static int dpToPixels(Context context, float dp) {
    final float scale = context.getResources().getDisplayMetrics().density;
    return (int) (dp * scale + 0.5f);
}

0voto

tsmith Punkte 2574

Versuchen Sie dies.

ImageButton shareButton = new ImageButton(this);
shareButton.setBackgroundResource(android.R.drawable.ic_menu_share);

RelativeLayout.LayoutParams shareParams = new RelativeLayout.LayoutParams(
        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
shareParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, navigationLogo.getId());
shareParams.width = INTEGER_NUMBER;
shareButton.setLayoutParams(shareParams);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X