繁体   English   中英

ImageView比例和宽度/高度变化

[英]ImageView Scale and Width/Height change

我试图在Xamarin / Android项目中使用TwoDScrollView的C#端口。

工作正常。 我们正在添加比例手势(我们正在显示可以由用户放大/缩小的图像)。 那也很好。

问题是TwoDScrollView依赖ImageView.Width和ImageView.Height进行计算,并且不会改变-缩放后尝试滚动时会引起问题。 关于调整大小,我们正在做:

fullscreenImageView.ScaleX = _scaleFactor;
fullscreenImageView.ScaleY = _scaleFactor;
var lp = fullscreenImageView.LayoutParameters;

lp.Width = (int) (fullscreenImageView.Drawable.IntrinsicWidth * _scaleFactor);
lp.Height = (int) (fullscreenImageView.Drawable.IntrinsicHeight * _scaleFactor);

fullscreenImageView.RequestLayout (); //the request layout was just a test,
                                      // it doesn't work either way

我们可以看到layoutparameter的宽度和高度是如何变化的,但是View.Width和View.Height从未改变...它始终是我们加载的原始图像的尺寸。 我们如何进行更新? (一种解决方案是缩放位图并将其分配给imageview,但这很糟糕而且很慢)。

谢谢。

根据此答案,您应该能够像这样设置ImageView对象的尺寸

image_view.getLayoutParams().width = (int) (fullscreenImageView.Drawable.IntrinsicWidth * _scaleFactor);
image_view.getLayoutParams().height = (int) (fullscreenImageView.Drawable.IntrinsicHeight * _scaleFactor);

其中image_view是对TwoDScrollView要查找尺寸的同一ImageView实例的引用。

假设您的fullscreenImageView扩展了ImageView ,则可以在fullscreenImageView添加此方法

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    int width = MeasureSpec.getSize(widthMeasureSpec);
    int height = width * getDrawable().getIntrinsicHeight() / getDrawable().getIntrinsicWidth();
    setMeasuredDimension(width, height);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM