10

我有这个代码:

<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);

以这种方式加载图像时,似乎没有进行缩放。但是,如果我通过 setImageDrawable() r.res 加载图像。里面的图像ImageView被调整大小。但是,我需要使用 setImageBitmap(),因为我通过 assets 文件夹加载图像。

我在这里错过了一些设置吗?这将使Android调整和缩放位图,所以它使用ImageView的全宽?我想我可以自己在代码中做到这一点,但我想我想做的只是通过设置一些属性来支持。

4

2 回答 2

14

不能信任系统的一切,特别是有时表现非常不同的 android。您可以调整位图的大小。

height = (Screenwidth*originalHeight)/originalWidth;

这将产生适当的高度。宽度等于您提到的屏幕宽度。

Bitmap pq=Bitmap.createScaledBitmap(pq,Screenwidth,height, true);
于 2013-05-25T12:09:20.307 回答
7

As I needed a bit of time to figure out the complete code to make this work, I am posting a full example here relying on the previous answer:

   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);
于 2015-01-27T23:13:54.757 回答