Соотношение сторон ImageView и AdjustViewBounds не работает в ConstraintLayout - PullRequest
0 голосов
/ 19 марта 2020

Iam работает в галерее изображений макета сетки в представлении переработчика. Код элемента представления рециркулятора:

    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:background="@android:color/holo_red_light"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <androidx.appcompat.widget.AppCompatImageView
        android:id="@+id/imageView"
        android:adjustViewBounds="true"
        app:layout_constraintDimensionRatio="9:16"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        tools:src="@drawable/test"
        android:layout_width="0dp"
        android:layout_height="0dp"/>

</androidx.constraintlayout.widget.ConstraintLayout>

Я выставляю AdjustViewBounds true, false, масштабируем все, но не могу удалить дополнительный вид сверху и снизу. Как это можно сделать. Красный цвет - это дополнительный вид в макете.

The sample image from the phone

1 Ответ

0 голосов
/ 20 марта 2020

Наконец я нашел ответ в переполнении стека, чтобы создать масштабируемое растровое изображение в соответствии с представлением. Код размещен ниже ...

fun loadScaledImage(imageView: ImageView, url: String) {
            Glide
                .with(binding.context)
                .asBitmap()
                .load(url)
                .into(object : CustomTarget<Bitmap>() {
                    override fun onLoadCleared(placeholder: Drawable?) {}
                    override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) {
                        val width = imageView.measuredWidth
                        val bitmapWidth = resource.width
                        if (bitmapWidth > width){
                            val height = width * resource.height / bitmapWidth
                            val newBitmap = Bitmap.createScaledBitmap(resource, width, height, false)
                            imageView.setImageBitmap(newBitmap)
                        } else {
                            imageView.setImageBitmap(resource)
                        }
                    }
                })
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...