Intereting Posts
Android: отслеживание количества созданных объектов SetOnClickListener и setOnLongClickListener вызов по одной проблеме кнопки Android Studio: звуковое оповещение о успехе сборки Android-камера: onActivityResult () намерение имеет значение null, если у него есть дополнительные функции Читать файл из активов Библиотека java vs android library Как динамически получать изображения из выпадающей папки Как управлять аутентификацией / авторизацией для пользовательских запросов, отправленных из родных мобильных приложений, вызывающих услуги Play2! -Scala REST Каковы значения по умолчанию для темы Holo на Android 4.0? Установить выбранный индекс Android RadioGroup Добавление элементов управления яркостью экрана в приложение для Android Кнопка не отвечает на событие Click Event после перевода Как я могу (и привязывать) удаленный сервис в android, который реализован в другом приложении (другой пакет)? Добавьте весы в файл .pb, экспортированный TensorFlow Тень списка ListView + пользовательский селектор

Позиционирование изображения внутри ImageView с максимальной высотой и максимальной шириной

У меня есть ImageView с максимальной высотой и максимальной шириной, равной 100 . На рисунке ниже явно нет квадрата, но вы можете использовать свое воображение;)

Рисунок 1:

 ╔══════════════════════════════════════════════╗ ║ ImageView ╔══════════════╗ ║ ║ ║ ║ ║ ║ ║ Actual image ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ╚══════════════╝ ║ ╚══════════════════════════════════════════════╝ 

Во всяком случае, если я попытаюсь установить BitMap в ImageView , который не имеет отношения 1: 1, изображение будет располагаться так, как показано на рисунке 1. Я хочу, чтобы изображение было размещено слева внутри ImageView подобно Как показано на рисунке 2 ниже.

Фигура 2:

 ╔══════════════════════════════════════════════╗ ║══════════════╗ ║ ║ ║ ║ ║ Actual image ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║══════════════╝ ║ ╚══════════════════════════════════════════════╝ 

Вы можете увидеть мой ImageView в XML ниже. maxHeight , maxWidth и adjustViewBounds устанавливаются во время выполнения.

 <ImageView android:id="@+id/someImage" android:layout_alignParentLeft="true" android:layout_below="@+id/textName" android:layout_height="wrap_content" android:layout_width="wrap_content" android:paddingRight="4dp" /> 

Это в RelativeLayout если это имеет значение.

Solutions Collecting From Web of "Позиционирование изображения внутри ImageView с максимальной высотой и максимальной шириной"

попробуй это

 <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/home_icon" android:scaleType="fitStart"/> 

Это просто помогает мне.

По умолчанию scaleType является «fitCenter» / ScaleType.FIT_CENTER, как в вашем первом эскизе.


Чтобы выровнять слева от ImageView, как показано на втором эскизе:

В представлении xml:

 <ImageView android:scaleType="fitStart" /> 

Или в классе Java:

 ImageView image_view = [create new ImageView or getView from xml]; image_view.setScale(ScaleType.FIT_START); 


Чтобы выровнять рисунок справа от ImageView

В представлении xml:

 <ImageView android:scaleType="fitEnd" /> 

Или в классе Java:

 ImageView image_view = [create new ImageView or getView from xml]; image_view.setScale(ScaleType.FIT_END); 

Почему бы вам просто не добавить drawableLeft к вашему представлению.

Как это (в вашем layout.xml): android: drawableLeft = "@ drawable / yourDrawableId" -или- как это (в Java-коде): yourView.setCompoundDrawablesWithIntrinsicBounds (yourDrawableId, 0, 0,0);

Вы можете управлять дополнением и т. Д. Этого чертежа внутри контейнера View (для управления настройками близкого размера).

Я столкнулся с такой же проблемой, и именно так я ее решил:

Я в конечном итоге поставил ImageView внутри RelativeLayout, который так же велик, как и ImageView, и задал серьезность относительной компоновки тому, что я хотел (оставил в вашем случае).

Я также установил для параметра adjustViewBounds значение true, чтобы ImageView был таким же большим, как и изображение, и располагался внутри Relative Layout.

Не очень элегантное решение, но оно работает …

Я использую:

 android:scaleType="fitCenter" 

Задокументировано здесь . Удачи!

EDIT: Мой плохой, я не понимал, что вы центрируете изображение в ImageView (в первом чтении я думал, что у вас возникли проблемы с центрированием ImageView в другом представлении). Теперь я не уверен, но вы можете смотреть ScaleType в любом случае ^ _-

Пытаться

 android:gravity="left" 

Гравитация – это то, как взгляд позиционирует его содержимое. Работает над TextView для текста и, возможно, ImageView для изображения.

Редактировать:

Попробуйте создать FrameLayout, содержащий ImageView. Установите ширину и высоту ImageView в значение «wrap_content» и установите значение силы тяжести родительского элемента «left».

В противном случае реализуйте onDraw в представлении и рисуйте изображение в любом месте, которое вы хотите.

Что-то неправильно. Ваш ImageView определяется с помощью wrap_content как для layout_width и для layout_height в XML, поэтому он всегда должен занимать только пространство, равное вашему растровому изображению.

Попробуйте добавить android:background для вашего ImageView, чтобы увидеть, что он действительно шире, чем ваш растровый рисунок, и вызвал нежелательное центрирование:

 <ImageView android:id="@+id/someImage" android:layout_alignParentLeft="true" android:layout_below="@+id/textName" android:layout_height="wrap_content" android:layout_width="wrap_content" android:paddingRight="4dp" android:background="#F00" /> 

Протестируйте его с помощью некоторых растровых изображений, которые имеют прозрачный цвет фона, чтобы мы могли видеть красный фон из ImageView. Я ожидаю, что он покажет высокий прямоугольник, если исходный растровый рисунок высок и широкий прямоугольник, если растровое изображение широко. Вы увидите квадрат только в том случае, если ваш исходный растровый рисунок является квадратным. Мы никогда не должны видеть пример с рисунком 1 из вашего вопроса.

Может быть, вы хотели, чтобы ваш ImageView всегда имел размер 100×100 в любое время? Затем вы можете использовать следующий код (обратите внимание на fitStart для атрибута scaleType который уже упоминается другими):

 <ImageView android:id="@+id/someImage" android:layout_alignParentLeft="true" android:layout_below="@+id/textName" android:layout_width="100dp" android:layout_height="100dp" android:paddingRight="4dp" android:background="#F00" android:scaleType="fitStart" /> 

Нет необходимости устанавливать maxHeight , maxWidth и adjustViewBounds из кода Java, если это то, что вы хотите.