Android ImageView — Минимальная ширина/минимальная высота не влияет, когда adjustViewBounds=true

#android #android-layout #android-imageview

Вопрос:

Я пытаюсь обернуть изображение большего размера с помощью adjustViewBounds, но, хотя это верно, минимальная ширина/минимальная высота не сохраняются для изображений меньшего размера, и это занимает фактический размер изображения.

Ответ №1:

Если вы посмотрите исходный код метода «onMeasure()» в ImageView, вы увидите, что минимальная ширина и минимальная высота не вступают в игру, если или resizeWidth == true или resizeHeight == true . Эти переменные изменения размера имеют значение true, если adjustViewBounds также верно.

Вы можете ввести использование minWidth и minHeight когда adjustViewBounds == true с пользовательским просмотром изображений, например, следующим образом:

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