2011-11-17 42 views
9

Android: làm thế nào để thiết lập chiều cao/chiều rộng của hình ảnh (hình ảnh src intead của nền) của một ImageButton?Android: cách đặt chiều cao/chiều rộng của hình ảnh src của ImageButton?

Tôi muốn thiết lập chiều cao/chiều rộng của hình ảnh cấp cao nhất (không nền) hình ảnh, kích thước của hình ảnh sẽ được tùy chỉnh thay vì fullfill nút tự động

+0

thể trùng lặp: http://stackoverflow.com/questions/6899088/adjusting-the-size-of-an-imagebutton-in-android –

+2

Tôi muốn thiết lập chiều cao/chiều rộng của hình ảnh cấp cao nhất (không phải nền), kích thước của hình ảnh phải được tùy chỉnh thay vì tự động điền vào nút. –

Trả lời

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: (mã 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

nó chỉ điều chỉnh chiều rộng và chiều cao của toàn bộ nút, tôi muốn điều chỉnh hình ảnh src. –

+0

Bạn có thể làm điều đó với mã java. – damson

+0

Cảm ơn, nó hơi phức tạp đối với tôi. Tôi quay sang sử dụng một biểu tượng khác để đi bộ xung quanh. –

6

Bạn có thể sử dụng Bitmap.cr eateScaledBitmap để chia tỷ lệ hình ảnh thành kích thước bạn muốn.

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

Theo [tài liệu] (https://developer.android.com/reference/android/graphics/Bitmap.html#createScaledBitmap) bạn đặt các kích thước ngược, bạn cần phải thực hiện như sau: 'image = Bitmap.createScaledBitmap (image, wantWidth, wishHeight, true); ' –

19

Bạn chỉ có thể sử dụng thuộc tính scaleType của ImageButton. Đặt nó thành fitXY hoặc fitCenter hoặc bất kỳ thứ gì khác theo nhu cầu của bạn.

như thế này

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

Đây phải là câu trả lời được chấp nhận. – MeetTitan

+1

Điều này không trả lời được câu hỏi. Câu hỏi đặt ra là hỏi cách đặt kích thước 'android: src' thay vì toàn bộ' ImageButton'. Ví dụ. có một 'ImageButton' là 100dp x 100dp với hình ảnh src ở 35dp x 35dp – Weizhi

3

tôi đã cùng một vấn đề ... thay đổi kích thước của 'src' hình ảnh của nút hình ảnh (không phải là kích thước nút chỉ hình ảnh duy nhất).

những gì tôi did--

tôi chuyển những tập tin '.png' từ thư mục 'drawable' thành 'drawable-hdpi' thư mục.

lạ ... nhưng nó hoạt động.

cảm ơn,

Các vấn đề liên quan