2011-11-17 11 views
9

Android: come impostare l'altezza/larghezza dell'immagine (immagine src sullo sfondo) di un ImageButton?Android: come impostare l'altezza/larghezza dell'immagine src di un ImageButton?

voglio impostare l'altezza/larghezza dell'immagine di livello superiore (non lo sfondo) dell'immagine, la dimensione dell'immagine deve essere personalizzato al posto del fullfill il tasto automaticamente

+0

Eventuali duplicati: http://stackoverflow.com/questions/6899088/adjusting-the-size-of-an-imagebutton-in-android –

+2

voglio impostare l'altezza/larghezza della immagine di livello superiore (non di sfondo), la dimensione dell'immagine deve essere personalizzata invece di riempire automaticamente il pulsante. –

risposta

2

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: (codice Java)

// 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 
      ) 
    ); 
+0

basta regolare la larghezza e l'altezza dell'intero pulsante, voglio regolare l'immagine src. –

+0

Puoi farlo con il codice java. – damson

+0

Grazie, è un po 'complicato per me. Mi sono girato per usare un'altra icona per camminare. –

6

È possibile utilizzare Bitmap.cr eateScaledBitmap per ridimensionare l'immagine alla dimensione desiderata.

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

In base ai [documenti] (https://developer.android.com/reference/android/graphics/Bitmap.html#createScaledBitmap) le dimensioni sono invertite, è necessario fare così: 'image = Bitmap.createScaledBitmap (image, desiredWidth, desiredHeight, true) ' –

19

si può semplicemente utilizzare l'attributo scaleType di ImageButton. Impostalo su fitXY o fitCenter o su qualsiasi altra cosa in base alle tue necessità.

come questo

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

Questa dovrebbe essere la risposta accettata. – MeetTitan

+1

Questo non risponde alla domanda. La domanda è chiedere un modo per impostare la dimensione di 'android: src' invece dell'intero' ImageButton'. Per esempio. avendo un 'ImageButton' che è 100dp x 100dp con immagine src a 35dp x 35dp – Weizhi

3

ho avuto lo stesso problema ... modificare la dimensione di 'src' immagine del pulsante di immagine (non la dimensione del tasto appena solo immagine).

quello che did--

mi sono trasferito coloro file '.png' dalla cartella 'disegnabile' nella cartella 'drawable-hdpi'.

strano ... ma ha funzionato.

grazie,

Problemi correlati