1

我以编程方式在线性布局中插入触摸图像视图。如果我使用普通图像视图,当方向改变时图像会自行调整。但是当我开始使用触摸图像视图时,图像会缩小到非常小的尺寸。这是代码我正在尝试实施:-

 TouchImageView imageView = new TouchImageView(this);
            LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
            layoutParams.setMargins(16,16,16,16);
            imageView.setLayoutParams(layoutParams);
            imageView.setMaxZoom(4f);
            web_linearLayout.addView(imageView);

            imageView.setAdjustViewBounds(true);
            imageView.setScaleType(TouchImageView.ScaleType.FIT_CENTER);
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                imageView.setCropToPadding(false);
            }

            imageView.setImageURI(Uri.fromFile(new File("/sdcard/reckoner_images/" + fileName)));

任何帮助或建议表示赞赏。谢谢。

4

1 回答 1

1

当您调用该方法setImageURI加载图像时,图像将根据设备的密度进行缩放。当您设置其 LayoutParams 时,该语句imageView.setAdjustViewBounds(true);将生成原始自动缩放的尺寸(您可以在 中阅读方法 'onMeasure' 的来源)。但是,重写方法以实现额外的功能,这会导致无用(您也可以阅读方法的来源)。所以尺寸不能自动缩放。您可以执行以下操作:ImageViewWRAP_CONTENTImageViewTouchImageViewonMeasuresetAdjustViewBoundsonMeasureTouchImageViewTouchImageView

使用setImageBitmap而不是setImageURI自己加载图像和处理缩放。

 //imageView.setImageURI(Uri.fromFile(new File("/sdcard/reckoner_images/" + fileName)));
    Bitmap bm = BitmapFactory.decodeFile("/sdcard/reckoner_images/" + fileName);
    imageView.setImageBitmap(bm);

或者在 LayoutParams 中使用MATCH_PARENT代替WRAP_CONTENTTouchImageView

LinearLayout.LayoutParams layoutParams =
            new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);

我自己测试过,很有用。希望它能解决你的问题:)

于 2016-08-31T09:10:06.697 回答