热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

androidlistview只加载显示的图片大小,在ListView中使用Glide库加载网络图片,为什么图片的大小会出现混乱?...

问题描述我想写一个聊天的界面,用的是ListView来展示对话。其中有需要加载图片的地方,我使用glide进行加载。然而会出现图片大小经常随机变换的情况

问题描述

我想写一个聊天的界面,用的是ListView来展示对话。其中有需要加载图片的地方,我使用glide进行加载。然而会出现图片大小经常随机变换的情况。

我写了一个测试的代码简化了一下问题。

bVbtgAc?w=365&h=607

但是快速下滑之后,图片的大小就都乱掉了。

bVbtgAo?w=373&h=651

bVbtgAo?w=373&h=651

问题出现的环境背景及自己尝试过哪些方法

相关代码

MainActivity.java

public class MainActivity extends AppCompatActivity {

private String[] urls = new String[]{"https:......"};

//urls of images.

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

ListView listView = findViewById(R.id.list_view);

final SparseArray sparseArray &#61; new SparseArray<>();

listView.setAdapter(new BaseAdapter() {

&#64;Override

public int getCount() {

return 100000;

}

&#64;Override

public Object getItem(int i) {

String url &#61; sparseArray.get(i);

if(url &#61;&#61; null){

url &#61; urls[(int)(Math.random() * urls.length)];

sparseArray.put(i,url);

}

return url;

}

&#64;Override

public long getItemId(int i) {

return i;

}

&#64;Override

public View getView(int i, View view, ViewGroup viewGroup) {

if(view &#61;&#61; null){

view &#61; View.inflate(getBaseContext(),R.layout.list_view_item_image,null);

}

ImageView imageView &#61; view.findViewById(R.id.image_view);

Glide.with(getBaseContext())

.load((String)getItem(i))

.into(imageView);

return view;

}

});

}

}

activity_main.xml

xmlns:app&#61;"http://schemas.android.com/apk/res-auto"

xmlns:tools&#61;"http://schemas.android.com/tools"

android:layout_width&#61;"match_parent"

android:layout_height&#61;"match_parent"

tools:context&#61;".MainActivity">

android:id&#61;"&#64;&#43;id/list_view"

android:layout_width&#61;"match_parent"

android:layout_height&#61;"match_parent"

/>

list_view_item_image.xml

android:orientation&#61;"vertical" android:layout_width&#61;"match_parent"

android:layout_height&#61;"wrap_content">

android:id&#61;"&#64;&#43;id/image_view"

android:adjustViewBounds&#61;"true"

android:maxHeight&#61;"200dp"

android:maxWidth&#61;"200dp"

android:layout_width&#61;"wrap_content"

android:layout_height&#61;"wrap_content" />

你期待的结果是什么&#xff1f;实际看到的错误信息又是什么&#xff1f;

我希望ListView中每个ImageView都能根据图片的原始大小自动调整其宽高&#xff0c;所以设置了wrap_content&#xff0c;并且为了防止过大&#xff0c;加了maxHeight和maxWidth的限制。但是列表下滑的时候&#xff0c;图片会莫名其妙的缩小&#xff0c;而且缩小的程度及其随机。我不知道这是不是glide的问题&#xff0c;请问我能否在不修改glide源码的情况下修复这个问题&#xff1f;



推荐阅读
  • 赠送 HttpClient 和HttpURLConnection 的轻型网络框架 ---》按照自己的需求定制修改框架
    转载注明出处:http:blog.csdn.netcodingandroidarticledetails41801309这个最后一节,我这里会总体的介绍一下这个项目的各个类的作用,以及使用 ... [详细]
  • 一、在androidStudio中实现tabs比较简单,新建项目就可以选择tabs模板进行创建,默认实现tabs功能:直接运行项目就可以看到效果:可以说非常简单,但是我们在实际开发 ... [详细]
  • 2019 年 Firebase 峰会上发布的新功能
    作者FrancisMa,HeadofProductFirebase的使命是帮助移动开发者和Web开发者迈向成功,但考虑到Firebase每个月有超过200万个活跃的应 ... [详细]
  • Android的四种启动模式
     对Android的启动模式不是很了解,这里记录下简单的理解内容以便日后查看。 Androi的四种启动模式分别为:standard,singleTop,singleTask,sing ... [详细]
  • C#的Type对象的简单应用
    通过Type对象可以获取类中所有的公有成员直接贴代码:classMyClass{privatestringname;privateintid;publicstringcity;pu ... [详细]
  • Shiro 简单了解
    Shiro简单了解简单用过SpringSecurity安全框架后,再试试另一个安全框架——Shiro。1.Shiro简介ApacheShiro是一个强大且易用的Java安全框架:S ... [详细]
  • 1.什么是hashcode方法?hashcode方法返回对象的哈希码值在应用程序的执行期间,只要对象的equals方法的比较操作所用到的信息没有改变& ... [详细]
  • GCD其实已经了解了很久了,在实际工程中也会经常用,但是其实很多实践都是浅尝辄止。最近又在回头看这块儿的内容,有一些知识点, ... [详细]
  • nvmw安装,用于控制node版本;
    之前一直使用的是nodev2.2.0版本,挺说新版本的node解决了npm安装插件产生文件夹结构过深的问题,所以就想更新试试;上网一看才发现,尼玛的node已经到了6.+版本了,好 ... [详细]
  • 3357: [Usaco2004]等差数列
    3357:[Usaco2004]等差数列TimeLimit:10SecMemoryLimit:128MBSubmit:321Solved:153[Submit][Status][D ... [详细]
  • hibernate映射组件映射
    在Hibernate中,component是某个实体的逻辑组成部分,它与实体的根本区别是没有oid(对象标识符),compo ... [详细]
  • 在ROS系统中,参数读写一般通过xml或者yaml格式的文件,其中yaml用得比较多。这是一种可读性高,轻量级的标记语言,简单好用。对于yaml文件,ros中用的较早版本的yaml- ... [详细]
  • 最近用python写了一个小程序,想发布出去让人试用又不想暴露源码,搜索了一下发现将py文件编译成pyd文件就能达到目的。转换过程很简单,但是在调用pyd文件并且打包为单个exe文 ... [详细]
  • ExistsQueryeditExistsQueryeditExistsQueryeditExistsQueryeditReturnsdocumentsthathaveatleas ... [详细]
  • socket8 [命名管道]
    ::命名管道不但能实现同一台机器上两个进程通信,还能在网络中不同机器上的两个进程之间的通信机制。与邮槽不同,命名管道是采用基于连接并且可靠的传输方式,所以命名管道传输数据只能一对一 ... [详细]
author-avatar
腾龙娱乐开户
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有