《按比例显示图片》listview 加载网络图片 用ImageLoader.display listview_item中上下有留白现象

要在item的布局里面加上两个属性:


android:adjustViewBounds="true"
            android:scaleType="fitStart"


以上这两个属性要一起使用,否则无效



<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="0dp"
    android:orientation="horizontal" >

    <LinearLayout
        android:id="@+id/lll"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="0dp"
        android:orientation="horizontal"
        android:padding="0dp" >

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:scaleType="fitStart"

            android:src="@drawable/loading" />
    </LinearLayout>

</LinearLayout>


 关于android中ImageView的外观,即图片在其内显示出的样子,与布局文件中adjustViewBonds和scaleType
属性的关系。我进行了一些探索。现跟大家共享,欢迎各位指教。分别将adjustViewBonds设为true和false,与各种scaleType搭配,产生了不同效果。(上面的ImagView的adjstViewBonds值为false;下面的ImagView的adjstViewBonds值为true;两个ImagView大小相同)如下:

代码:

Xml代码   收藏代码
  1. <ImageView  
  2.         android:id="@+id/imageView1"  
  3.         android:layout_width="fill_parent"  
  4.         android:layout_height="200dip"  
  5.         android:adjustViewBounds="false"  
  6.         android:scaleType="centerInside"//此处每次更改  
  7.         android:src="@drawable/ic_3" />//此处两幅图间更改,一副图的大小较小,另一幅的较大。  
  8.   
  9.     <ImageView  
  10.         android:id="@+id/imageView2"  
  11.         android:layout_width="fill_parent"  
  12.         android:layout_height="200dip"  
  13.         android:adjustViewBounds="true"  
  14.         android:scaleType="centerInside"//此处每次更改  
  15.         android:src="@drawable/ic_3" />//此处两幅图间更改,一副图的大小较小,另一幅的较大。  

 原图:



  

1、scaleType=“matrix”
如图pic1、pic2.
是保持原图大小、从左上角的点开始,以矩阵形式绘图。


 

pic1
 

pic2
 
2、scaleType=“fitXY”
如图pic3、pic4.
是将原图进行横方向(即XY方向)的拉伸后绘制的。


pic3
 

pic4
 
3、scaleType=“fitStart”
如图pic5、pic6。
是将原图沿左上角的点(即matrix方式绘图开始的点),按比例缩放原图绘制而成的。


pic5
 

pic6
 
4、scaleType=“fitCenter”
如图pic7、pic8。
是将原图沿上方居中的点(即matrix方式绘图第一行的居中的点),按比例缩放原图绘制而成的。


pic7
 

pic8
 
5、scaleType=“fitEnd”
如图pic9、pic10。、
是将原图沿下方居中的点(即matrix方式绘图最后一行的居中的点),按比例缩放原图绘制而成的。


pic9
 

pic10
 
6、scaleType=“Center”
如图pic11、pic12。
是保持原图大小,以原图的几何中心点和ImagView的几何中心点为基准,只绘制ImagView大小的图像。


pic11
 
 pic12
 
7、scaleType=“centerCrop”
如图pic13、pic14。
不保持原图大小,以原图的几何中心点和ImagView的几何中心点为基准,只绘制ImagView大小的图像(以填满
ImagView为目标,对原图进行裁剪)。


pic13
 

pic14
 
8、scaleType=“centerInside”
如图pic15、pic16.
不保持原图大小,以原图的几何中心点和ImagView的几何中心点为基准,只绘制ImagView大小的图像(以显示
完整图片为目标,对原图进行缩放)。


pic15
 

pic16

      (事实证明,adjustViewBonds单独设置无影响。)

      依本人之见,scaletype的种类分为三类matrix(默认)、fit-X类、和center类。matrix就不多说。fit-X类中,
fitStart、fitCenter和fitEnd之间的都是根据需要使原图改变对ImgView进行适应,按matrix进行绘制,但它们
的区别在于基准不同。fitStart的基准为最上角的点(即matrix方式开始的点)fitCenter的基准点为中间的点
(matrix方式中可以使图片居中的点),而fitEnd的基准点为右下角的点(即matrix方式最后绘制点)。center类
中,center、centerCrop、centerInside都是以原图的几何中心点和ImagView的几何中心点为基准,且只绘制
ImagView大小的图像,不同的是是否保持原图大小和绘图的目标不同、采取的手段不同。


上文转自:http://blog.csdn.net/gassion521/article/details/9214565

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的实现步骤: 1. 在布局文件添加ListView组件: ``` <ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent"/> ``` 2. 创建一个自定义的适配器(Adapter),用于将数据绑定到ListView上: ``` public class CustomAdapter extends BaseAdapter { private Context context; private ArrayList<String> titles; private ArrayList<String> imageUrls; public CustomAdapter(Context context, ArrayList<String> titles, ArrayList<String> imageUrls) { this.context = context; this.titles = titles; this.imageUrls = imageUrls; } @Override public int getCount() { return titles.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View row = layoutInflater.inflate(R.layout.list_item, parent, false); TextView titleTextView = row.findViewById(R.id.titleTextView); ImageView imageView = row.findViewById(R.id.imageView); titleTextView.setText(titles.get(position)); // 使用Glide库加载网络图片 Glide.with(context).load(imageUrls.get(position)).into(imageView); return row; } } ``` 3. 在布局文件创建每个ListView项的布局(list_item.xml): ``` <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <ImageView android:id="@+id/imageView" android:layout_width="100dp" android:layout_height="100dp" android:layout_margin="10dp" android:background="#f0f0f0"/> <TextView android:id="@+id/titleTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:textSize="18sp"/> </LinearLayout> ``` 4. 在Activity获取ListView组件,并将适配器绑定到ListView上: ``` public class MainActivity extends AppCompatActivity { private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = findViewById(R.id.listView); ArrayList<String> titles = new ArrayList<>(); titles.add("Title 1"); titles.add("Title 2"); titles.add("Title 3"); ArrayList<String> imageUrls = new ArrayList<>(); imageUrls.add("https://via.placeholder.com/150"); imageUrls.add("https://via.placeholder.com/150"); imageUrls.add("https://via.placeholder.com/150"); CustomAdapter adapter = new CustomAdapter(this, titles, imageUrls); listView.setAdapter(adapter); } } ``` 以上就是一个简单的实现,你可以根据自己的需求进行修改和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值