как автоматически установить ширину / высоту изображения

#java #android #android-studio

#java #Android #android-studio

Вопрос:

У меня есть изображение с соотношением сторон (высота) 3: (ширина) 1. Я хочу, чтобы это изображение соответствовало ширине экрана и сохраняло соотношение сторон.

например, если ширина экрана равна 720, ширина изображения будет равна 720, а высота изображения будет равна 720 x 3 (2160)

Ответ №1:

Решение без ConstraintLayout.

 class AspectRatioImageView @JvmOverloads constructor(
  context: Context,
  attrs: AttributeSet? = null,
  defStyleAttr: Int = 0
): AppCompatImageView(context, attrs, defStyleAttr) {

  override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec)
    var height = (measuredWidth * 3 ).toInt()

    setMeasuredDimension(width, height)
  }
}
 

Затем вы можете использовать width as match_parent и any height при использовании AspectRatioImageView в XML.

Ответ №2:

Привет, мне удалось решить мою проблему, вот решение:

  <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:background="@drawable/sign1s"
            app:layout_constraintDimensionRatio="W,230:350"
            tools:ignore="MissingConstraints" />

    </androidx.constraintlayout.widget.ConstraintLayout>