gpt4 book ai didi

java - 如何使用 TouchImageView 以编程方式调整图像宽度以适应线性布局?

转载 作者:行者123 更新时间:2023-11-30 01:02:35 25 4
gpt4 key购买 nike

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

 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)));

如有任何帮助或建议,我们将不胜感激。谢谢。

最佳答案

调用setImageURI方法加载图片时,图片会根据设备的密度进行缩放。当您使用 WRAP_CONTENT 设置 LayoutParams 时,语句 imageView.setAdjustViewBounds(true); 将使原始 ImageView 的尺寸自动缩放(您可以阅读ImageView 中方法“onMeasure”的来源)。但是,TouchImageView 覆盖方法onMeasure 实现额外的功能,这导致setAdjustViewBounds 没用(也可以阅读onMeasure 方法的源码TouchImageView 中)。所以 TouchImageView 的尺寸不能自动缩放。您可以执行以下操作:

使用setImageBitmap代替setImageURI加载图片并自行处理缩放。

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

或者在 TouchImageView 的 LayoutParams 中使用 MATCH_PARENT 而不是 WRAP_CONTENT

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

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

关于java - 如何使用 TouchImageView 以编程方式调整图像宽度以适应线性布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39241848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com