2013-05-25 30 views
9

tôi có mã này:Android rộng ImageView từ setImageBitmap

<ImageView 
android:id="@+id/listitem_logo" 
android:layout_width="match_parent"         
android:layout_height="wrap_content" /> 

imageview_logo.setImageBitmap(bit); // comes from assets 
imageview_logo.setAdjustViewBounds(true);   
imageview_logo.setScaleType(ImageView.ScaleType.FIT_CENTER); 
imageview_logo.setBackgroundColor(0x00000000); 
imageview_logo.setPadding(0, 0, 0, 0); 
imageview_logo.setVisibility(v.VISIBLE); 

Khi tải các hình ảnh theo cách này, không mở rộng quy mô dường như đã được thực hiện. Tuy nhiên, nếu tôi tải một hình ảnh thông qua setImageDrawable() r.res. hình ảnh bên trong ImageView được thay đổi kích thước. Tuy nhiên, tôi cần phải sử dụng setImageBitmap() kể từ khi tôi tải hình ảnh của tôi thông qua thư mục tài sản.

Tôi có thiếu một số cài đặt ở đây không? Điều đó sẽ làm cho Android thay đổi kích thước và chia tỷ lệ bitmap, vì vậy nó sử dụng toàn bộ chiều rộng của ImageView? Tôi đoán tôi có thể tự mình làm điều đó bằng mã, nhưng tự nhiên tôi nghĩ rằng những gì tôi muốn làm sẽ được hỗ trợ chỉ bằng cách thiết lập một số thuộc tính.

+1

Hãy thử sử dụng 'setImageDrawable() ' –

+0

setImageDrawable không chấp nhận một Bitmap. – Tom

+2

sử dụng CENTER_CROP dưới dạng scaletype AND WRAP_CONTENT cho chiều rộng – Blackbelt

Trả lời

13

Không thể tin tưởng hệ thống cho mọi thứ đặc biệt android, đôi khi hoạt động rất khác nhau. Bạn có thể thay đổi kích thước bitmap.

height = (Screenwidth*originalHeight)/originalWidth; 

điều này sẽ tạo ra chiều cao phù hợp. chiều rộng bằng chiều rộng màn hình như bạn đã đề cập.

Bitmap pq=Bitmap.createScaledBitmap(pq,Screenwidth,height, true); 
5

Như tôi cần một chút thời gian để tìm ra các mã hoàn chỉnh để làm cho công việc này, tôi đăng một ví dụ đầy đủ ở đây dựa vào các câu trả lời trước:

ImageView bikeImage = (ImageView) view.findViewById(R.id.bikeImage); 
    AssetLoader assetLoader = new AssetLoader(getActivity()); 
    Bitmap bitmap = assetLoader.getBitmapFromAssets(
       Constants.BIKES_FOLDER + "/" + bike.getName().toLowerCase() 
         .replace(' ', '_').replace('-', '_') + ".png"); 
    int width = getActivity().getResources().getDisplayMetrics().widthPixels; 
    int height = (width*bitmap.getHeight())/bitmap.getWidth(); 
    bitmap = Bitmap.createScaledBitmap(bitmap, width, height, true); 
    bikeImage.setImageBitmap(bitmap); 
Các vấn đề liên quan