【问题标题】:Display drawable exactly the size of the imageView to use as a placeholder以 imageView 的大小显示 drawable 以用作占位符
【发布时间】:2015-07-12 18:42:19
【问题描述】:

我检查过的朋友get drawable exactly the size of the imageView to use as a placeholder

但这对我没有帮助

我的问题是我想显示一个完全符合图像大小的占位符

图像大小是动态的,我从服务器获取图像高度和宽度,使用它来计算调整后的宽度和高度

例如,在列表的一行中,我必须显示 400 * 300 大小的图像,而在另一行中,我必须显示 700 * 500 大小的图像

现在我希望占位符在第一种情况下填充 400*300 区域,在第二种情况下填充 700*500 区域,这是我无法实现的,

我怎样才能做到这一点?

mDisplayImageOptions = new DisplayImageOptions.Builder()
                .resetViewBeforeLoading(true)
                .imageScaleType(ImageScaleType.EXACTLY)
                .showImageOnLoading(R.drawable.test_user)
                .cacheInMemory(true)
                .cacheOnDisk(true)
                .build();



    mAdjustedWidth = mWindowWidth - 10;
            mAdjustedHeight = 400;
            try {
                int width = cursor.getInt(cursor.getColumnIndexOrThrow(TalkTable.TALK_TWIDTH));
                if(width > 0) {
                    mAdjustedHeight = (mAdjustedWidth * cursor.getInt(cursor.getColumnIndexOrThrow(TalkTable.TALK_THEIGHT))) / width;
                }
            }catch (Exception ex){
                ex.printStackTrace();
            }
            talkImageView.getLayoutParams().height = mAdjustedHeight;
            talkImageView.getLayoutParams().width = mAdjustedWidth;
            talkImageView.requestLayout();

 mImageLoader.displayImage(talkImageThumbnil,talkImageView,mTalksDisplayImageOptions,new SimpleImageLoadingListener(){
                @Override
                public void onLoadingStarted(String imageUri, View view) {
                    // ProgressBar progressBar1 = (ProgressBar)progressBar.getTag();
                    //progressBar1.setVisibility(View.VISIBLE);
                    talkImageView.getLayoutParams().height = mAdjustedHeight;
                    talkImageView.getLayoutParams().width = mAdjustedWidth;
                    talkImageView.requestLayout();
                    talkImageView.setImageResource(R.drawable.image_place_holder);
                    Log.d(TAG, " Progress bar  visisble ");
                }

                @Override
                public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
                    //ProgressBar progressBar1 = (ProgressBar)progressBar.getTag();
                    //progressBar1.setVisibility(View.GONE);
                }

                @Override
                public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                    //ProgressBar progressBar1 = (ProgressBar)progressBar.getTag();
                    //progressBar1.setVisibility(View.GONE);
                }

                @Override
                public void onLoadingCancelled(String imageUri, View view) {
                    //ProgressBar progressBar1 = (ProgressBar)progressBar.getTag();
                    //progressBar1.setVisibility(View.GONE);
                }

            });

XML 图像视图

我一直在为此苦苦挣扎,请帮助我

图片下载前占位符是这样的

图片下载后如下图所示

我希望占位符填充即将显示的图像的确切高度和宽度

【问题讨论】:

  • “我的问题是我想显示一个完全符合图像大小的占位符”什么图像大小?你到底有什么问题?
  • @psink 图像大小是动态的,它可以是任何大小的服务器向我发送大小,我计算它并相应地调整高度
  • 高度是多少?发布一些描述您的问题的图片?
  • @psink 我已经编辑了问题并添加了用例,请看一下
  • 试过 android:adjustViewBounds 吗?

标签: android android-layout android-imageview android-image


【解决方案1】:

将 ImageView 的比例类型设置为 fitCenter ?

【讨论】:

  • 我建议使用 fitCenter,因为它会将图像调整为 ImageView,并在必要时将其放大,同时保持纵横比。
  • 我做到了,但行为仍然相同
  • 我已经编辑了代码,我也试过了,但它不起作用
  • 有什么问题?是否要拉伸占位符图像?在这种情况下使用 fitXY。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多