Android显示等宽图片的问题

Posted 集君

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android显示等宽图片的问题相关的知识,希望对你有一定的参考价值。

安卓开发常遇到一个问题,就是在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倍

 

以上是关于Android显示等宽图片的问题的主要内容,如果未能解决你的问题,请参考以下文章

瀑布流布局(等宽不等高)

在android中显示隐藏片段

CardView 不在披萨片段中显示图片

Android片段不会显示

图片等宽不等高的网页布局怎么写? 如图....

带有片段的 Android Up 按钮未显示完整片段