17 Stimmen

Android: Wie kann man die Höhe/Breite des src-Bildes eines ImageButtons festlegen?

Android: Wie kann man die Höhe/Breite des Bildes (src image intead of the background) einer ImageButton einstellen?

Ich möchte die Höhe/Breite des Bildes der obersten Ebene (nicht des Hintergrundbildes) einstellen, die Größe des Bildes sollte angepasst werden, anstatt die Schaltfläche automatisch auszufüllen

22voto

Sie können einfach die scaleType Attribut von ImageButton . Setzen Sie ihn auf fitXY o fitCenter oder irgendetwas anderes, je nach Ihrem Bedarf.

wie diese

<ImageButton
    android:id="@+id/imageButton"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:scaleType="fitCenter"
    android:src="@drawable/some_image">
</ImageButton>

6voto

Chris Punkte 343

Sie können Bitmap.createScaledBitmap verwenden, um das Bild auf die gewünschte Größe zu skalieren.

Bitmap image = ... //load image from your source
image = Bitmap.createScaledBitmap(image, desiredHeight, desiredWidth, true);

3voto

damson Punkte 2597

xml

<ImageButton
android:id="@+id/picture_id"
android:layout_width="10dp"  //here width with unit. 5 dp exemple
android:layout_height="3dp"  //here height with unit. 3 dp exemple
android:src="@drawable/picture_name"
/>

EDIT: (java code)

// load the origial BitMap (500 x 500 px)
    Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(),
           R.drawable.android);

    int width = bitmapOrg.width();
    int height = bitmapOrg.height();
    int newWidth = 200;
    int newHeight = 200;

    // calculate the scale - in this case = 0.4f
    float scaleWidth = ((float) newWidth) / width;
    float scaleHeight = ((float) newHeight) / height;

    // create a matrix for the manipulation
    Matrix matrix = new Matrix();
    // resize the bit map
    matrix.postScale(scaleWidth, scaleHeight);
    // rotate the Bitmap
    matrix.postRotate(45);

    // recreate the new Bitmap
    Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0,
                      width, height, matrix, true);

    // make a Drawable from Bitmap to allow to set the BitMap
    // to the ImageView, ImageButton or what ever
    BitmapDrawable bmd = new BitmapDrawable(resizedBitmap);

    ImageView imageView = new ImageView(this);

    // set the Drawable on the ImageView
    imageView.setImageDrawable(bmd);

    // center the Image
    imageView.setScaleType(ScaleType.CENTER);

    // add ImageView to the Layout
    linLayout.addView(imageView,
            new LinearLayout.LayoutParams(
                  LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT
            )
    );

3voto

Zakynthos Punkte 101

Ich hatte das gleiche Problem... Ändern Sie die Größe des 'src' Bildes der Bild-Schaltfläche (nicht die Größe der Schaltfläche nur das Bild).

Was ich getan habe

Ich habe diese '.png'-Dateien aus dem Ordner 'drawable' in den Ordner 'drawable-hdpi' verschoben.

Seltsam... aber es hat funktioniert.

danke,

3voto

Extremis II Punkte 4497

einstellen. Polsterung und scaletype auf centerInside

Mit Hilfe von Padding können Sie das Quellbild so anpassen, dass es die gewünschte Höhe und Breite hat.

 <ImageButton
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:src="@drawable/location"
            android:padding="10dp"
            android:scaleType="centerInside"
            android:background="@drawable/blue_circle_border"/>

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