
Есть проблема, o Ошибка, или они просто хотели, чтобы сделать это, в объекте ImageView, Программирование в Андроид. Если назначить ширину match_parent к этому объекту, и высота wrap_content, в случае, изображение Вы идете к регистрации в качестве Источник Есть некоторые более высокие размеры чтобы из ImageView, Там, кажется, чтобы быть проблема Некоторые.
В проблема Она возникает, когда изображение, присвоенное объекту ImageView размеры нижней к этому объекту. полезно, изображение появляется с первоначальных размеров, и не распространяется на ImageView полностью.
В таком случае, как играть с различными Параметры и атрибуты Объект ImageView, никогда не Вы получите результат, который вы хотите. Можно изменить свойства scaleType, adjustViewBounds, layout_height, layout_width, … и ничего, не будет иметь успеха.
Как сделать изображение ImageView будет полностью изменить размер объекта
Для Получить Цель изображение из ImageView изменить размер объекта не теряя его пропорции, решение заключается в создании новый класс Java в нашем проекте, расширить класс ImageView и Исправление проблема, которую мы имеем.
Для этого, в проекте, CREA a новый класс. Мы будем называть ResizableImageView, и ваш код выглядит следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | package com.mypackage; import android.content.Context; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.widget.ImageView; public class ResizableImageView extends ImageView { public ResizableImageView(Context context, AttributeSet attrs) { super(context, attrs); } public ResizableImageView(Context context) { super(context); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { Drawable d = getDrawable(); if (d == null) { super.setMeasuredDimension(widthMeasureSpec, heightMeasureSpec); return; } int imageHeight = d.getIntrinsicHeight(); int imageWidth = d.getIntrinsicWidth(); int widthSize = MeasureSpec.getSize(widthMeasureSpec); int heightSize = MeasureSpec.getSize(heightMeasureSpec); float imageRatio = 0.0F; if (imageHeight > 0) { imageRatio = imageWidth / imageHeight; } float sizeRatio = 0.0F; if (heightSize > 0) { sizeRatio = widthSize / heightSize; } int width; int height; if (imageRatio >= sizeRatio) { width = widthSize; height = width * imageHeight / imageWidth; } else { height = heightSize; width = height * imageWidth / imageHeight; } setMeasuredDimension(width, height); } } |
Раз создан e Реализовано класс ResizableImageView, Что мы делаем сейчас изменить в XML из Макет Посмотреть где это ImageView на который мы хотим сделать это изменение размера изображения.
Давайте предположим, что, ранее чтобы изменить, ImageView изменить XML выглядит следующим образом:
1 2 3 4 5 6 | <ImageView android:id="@+id/miImagen" android:layout_width="match_parent" android:layout_height="wrap_content" android:src="https://cdn1.professor-falken.com/@drawable/imagen" /> |
Ну, просто нужно изменить класс такого объекта, для Новые функции созданный класс, следующим образом:
1 2 3 4 5 6 | <com.mypackage.ResizableImageView android:id="@+id/miImagen" android:layout_width="match_parent" android:layout_height="wrap_content" android:src="https://cdn1.professor-falken.com/@drawable/imagen" /> |
С этим класс и изменения в XML-код, Мы достигнем изображений, содержащихся в объекте ImageView Размер, сохранение ее пропорциональность, даже в тех случаях, в которых изображения на один размер меньше, чем контейнер.
