标签:
安卓开发常遇到一个问题,就是在listView里面,在不知道图片宽高的前提下,另图片布满屏幕(图片宽度等于屏幕宽度,高度自适应)。在listView中,只是设置scaleType,imageView.setBackground()是一定程度上导致图片拉伸失真,setImageDrawable()则不能满屏。参考网上的几种方案,自己总结了一个比较简单可用的:
imageView布局:
1 <ImageView 2 android:id="@+id/imgIco" 3 android:layout_width="wrap_content" 4 android:layout_height="wrap_content" 5 android:layout_marginLeft="15dp" 6 android:layout_marginRight="15dp" 7 android:layout_marginTop="10dp" 8 android:adjustViewBounds="true" 9 android:scaleType="fitCenter" 10 />
其中,ajustViewBounds要设置为true,fitCenter居中对齐(如果直接设置了width为math_content也可以实现了,只是如果一些图片很长,会导致listView的item布局也很长)
然后,在代码里面设置ImageView最大宽度和最大高度,因为adjustViewBounds属性只有在设置了最大高度和最大宽度后才会起作用:
1 WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); 2 int screenWidth = wm.getDefaultDisplay().getWidth(); 3 ViewGroup.LayoutParams lp = holder.imgIco.getLayoutParams(); 4 lp.width = screenWidth; 5 lp.height = LayoutParams.WRAP_CONTENT; 6 holder.imgIco.setLayoutParams(lp); 7 holder.imgIco.setMaxWidth(screenWidth); 8 holder.imgIco.setMaxHeight(screenWidth * 5);//这里其实可以根据需求而定,我这里测试为最大宽度的5倍
标签:
原文地址:http://www.cnblogs.com/chq3272991/p/5332119.html