Android ImageView - 当adjustViewBounds=true时minWidth/minHeight没有效果

Posted

技术标签:

【中文标题】Android ImageView - 当adjustViewBounds=true时minWidth/minHeight没有效果【英文标题】:Android ImageView - minWidth/minHeight has no effect when adjustViewBounds=true 【发布时间】:2021-11-26 17:30:21 【问题描述】:

我正在尝试使用 adjustViewBounds 包装较大的图像,但这是真的 minWidth/minHeight 不会保留用于较小的图像,它会占用图像的实际大小。

【问题讨论】:

【参考方案1】:

如果您查看ImageView 中“onMeasure()”方法的source code,您会发现如果resizeWidth == true 中的任何一个,最小宽度和最小高度都不会起作用或resizeHeight == true。如果adjustViewBounds 也为真,则这些调整大小变量设置为真。

adjustViewBounds == true 时可以引入minWidthminHeight 的使用,自定义ImageView 如下:

class MyImageView @JvmOverloads constructor(
    context: Context, attrs: AttributeSet? = null
) : androidx.appcompat.widget.AppCompatImageView(context, attrs) 

    override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) 
        super.onMeasure(widthMeasureSpec, heightMeasureSpec)
        setMeasuredDimension(
            max(suggestedMinimumWidth, measuredWidth),
            max(suggestedMinimumHeight, measuredHeight)
        )
    

【讨论】:

以上是关于Android ImageView - 当adjustViewBounds=true时minWidth/minHeight没有效果的主要内容,如果未能解决你的问题,请参考以下文章

ImageView 未显示在 android 中使用相机捕获的图像

Android ImageView - 当adjustViewBounds=true时minWidth/minHeight没有效果

Android总结 - ImageView

如何在 Android 中水平滚动 ImageView?

Android课程---Android ImageView的scaleType属性与adjustViewBounds属性(转)

android:将灰度过滤器设置为imageView