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

ImageView大小未正确显示-ImageViewsizeisnotdisplayedcorrectly

ImhavingaproblemofdisplayingImageViewswiththecorrectsize.AlmostallthepoststhatIve

I'm having a problem of displaying ImageViews with the correct size. Almost all the posts that I've read through involves ImageViews that are created in the layout file. However in my case, I'm creating ImageViews programmatically.

我有一个显示正确大小的ImageViews的问题。我读过的几乎所有帖子都涉及在布局文件中创建的ImageView。但是在我的情况下,我是以编程方式创建ImageViews。

I'm trying to display all images from a particular folder located in the storage. The bitmaps retrieved will be placed in ImageViews which are contained within a GridView.

我正在尝试显示位于存储中的特定文件夹中的所有图像。检索到的位图将放置在GridView中,ImageView包含在GridView中。

Here's my code:

这是我的代码:

//pass an array containing all images paths to adapter
imageGrid.setAdapter(new GridViewAdapter(getActivity(), FilePathStrings));

part of GridVewAdapter code:

GridVewAdapter代码的一部分:

public View getView(int position, View convertView, ViewGroup parent) {
            ImageView imageView;

            if(cOnvertView== null){
                imageView = new ImageView(mContext);
                imageView.setLayoutParams(new GridView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
                imageView.setScaleType(ImageView.ScaleType.FIT_XY);
                imageView.setPadding(5, 5, 5, 5);
                imageView.setAdjustViewBounds(true);

            }else{
                imageView = (ImageView) convertView;
            }

            imageView.setTag(filepath[position]);
            new LoadImages(imageView).execute();

            return imageView;
        }

AsyncTask to retrieve bitmaps:

AsyncTask检索位图:

private class LoadImages extends AsyncTask {

        private ImageView imgView;
        private String path;

        private LoadImages(ImageView imgView) {
            this.imgView = imgView;
            this.path = imgView.getTag().toString();
        }

        @Override
        protected Bitmap doInBackground(Object... params) {
            Bitmap bitmap = null;

            BitmapFactory.Options bmOptiOns= new BitmapFactory.Options();
            bmOptions.inJustDecodeBounds = false;
            bmOptions.inSampleSize = 6;

            bitmap = BitmapFactory.decodeFile(path, bmOptions);
            try {

                int dimension = getSquareCropDimensionForBitmap(bitmap);
                bitmap = ThumbnailUtils.extractThumbnail(bitmap, dimension, dimension);

            }catch (Exception e) {
                e.printStackTrace();
            }

            return bitmap;
        }

        @Override
        protected void onPostExecute(Bitmap result) {

            if (!imgView.getTag().toString().equals(path)) {
                return;
            }

            if(result != null && imgView != null){
                imgView.setVisibility(View.VISIBLE);
                imgView.setImageBitmap(result);

            }else{
                imgView.setVisibility(View.GONE);
            }
        }
    }

Method to get equal dimensions so bitmaps will be displayed as squares:

获得相同尺寸的方法使位图显示为正方形:

private int getSquareCropDimensionForBitmap(Bitmap bitmap) {

           int dimension;
            //If the bitmap is wider than it is height then use the height as the square crop dimension

            if (bitmap.getWidth() >= bitmap.getHeight())    {
                dimension = bitmap.getHeight();
            }
            //If the bitmap is taller than it is width use the width as the square crop dimension

           else    {
                dimension = bitmap.getWidth();
            }
            return dimension;

    }

GridView in the layout file:

布局文件中的GridView:

    


The result that I've gotten:

结果我得到了:

imgview_result

The circled thin "lines" are actually the ImageViews displayed.

带圆圈的细线“实际上是显示的ImageViews”。

Any help is very much appreciated. Thank you in advance!

很感谢任何形式的帮助。先感谢您!

2 个解决方案

#1


0  


#2


0  

I have other views above the GridView so I can't set its height to fill_parent/match_parent in the .xml file as it will affect the views above.

我在GridView上面有其他视图,因此我无法在.xml文件中将其高度设置为fill_parent / match_parent,因为它会影响上面的视图。

The solution to my problem is to set GridView's height and width programmatically.

我的问题的解决方案是以编程方式设置GridView的高度和宽度。

Replace:

imageView.setLayoutParams(new GridView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));

With this:

imageView.setLayoutParams(new GridView.LayoutParams(int height, int width));

Explanation:

Grid View doc

网格视图文档

Anyone who has a better answer, please post it :)

谁有更好的答案,请发布:)


推荐阅读
  • 单片微机原理P3:80C51外部拓展系统
      外部拓展其实是个相对来说很好玩的章节,可以真正开始用单片机写程序了,比较重要的是外部存储器拓展,81C55拓展,矩阵键盘,动态显示,DAC和ADC。0.IO接口电路概念与存 ... [详细]
  • MySQL 5.7 学习指南:SQLyog 中的主键、列属性和数据类型
    本文介绍了 MySQL 5.7 中主键(Primary Key)和自增(Auto-Increment)的概念,以及如何在 SQLyog 中设置这些属性。同时,还探讨了数据类型的分类和选择,以及列属性的设置方法。 ... [详细]
  • 原文网址:https:www.cnblogs.comysoceanp7476379.html目录1、AOP什么?2、需求3、解决办法1:使用静态代理4 ... [详细]
  • 开发技巧:在Interface Builder中实现UIButton文本居中对齐的方法与步骤
    开发技巧:在Interface Builder中实现UIButton文本居中对齐的方法与步骤 ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • 深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案
    深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 2.2 组件间父子通信机制详解
    2.2 组件间父子通信机制详解 ... [详细]
  • 深入解析 Synchronized 锁的升级机制及其在并发编程中的应用
    深入解析 Synchronized 锁的升级机制及其在并发编程中的应用 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 本文详细解析了 Android 系统启动过程中的核心文件 `init.c`,探讨了其在系统初始化阶段的关键作用。通过对 `init.c` 的源代码进行深入分析,揭示了其如何管理进程、解析配置文件以及执行系统启动脚本。此外,文章还介绍了 `init` 进程的生命周期及其与内核的交互方式,为开发者提供了深入了解 Android 启动机制的宝贵资料。 ... [详细]
  • 出库管理 | 零件设计中的状态模式学习心得与应用分析
    出库管理 | 零件设计中的状态模式学习心得与应用分析 ... [详细]
author-avatar
lmc的
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有