android: розтягнути зображення в перегляді зображень, щоб помістити екран


126

У мене є , imageviewщо має висоту і ширину , щоб набір fill_parentз , linearlayoutякий має той же значення , набір. Тому я вважаю, що це повинно встановити мої зображення так, щоб вони помістилися на екрані. Але він відповідає лише 80% (запас верху і знизу в ландшафтному режимі).

Я успішно спробував такий код:

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();
int height = display.getHeight();

imgView.setMinimumWidth(width);
imgView.setMinimumHeight(height);

imgView.setMaxWidth(width);
imgView.setMaxHeight(height);

Будь-які інші ідеї?


Хоча це дещо інша проблема, ця відповідь повинна вам допомогти.
fredley

Відповіді:


317

щоб змінити програмне використання:

imgview.setScaleType(ScaleType.FIT_XY);

АБО

щоб змінити використання xml:

 android:scaleType="fitXY"

26
Я знаю, що саме цього ви хотіли, але для зображень, де ви дбаєте про співвідношення сторін, це розтягне його.
Артем Русаковський

Творить чудеса для ImageView всередині ScrollView. Навіть аспект зберігається правильним.
JNissi

10
Те саме можна визначити в макеті xml, android: scaleType = "fitXY"
Sathesh

9
Щоб зображення заповнило всю площу та зберегло гарне співвідношення сторінv.setAdjustViewBounds(true); v.setScaleType(ImageView.ScaleType.CENTER_CROP);
Марко Флоріан,

1
Працює як чарівність
Дейв o grady

119

Укажіть у XML-файл вашого макета android:scaleType="fitXY"
PS: це стосується, коли зображення встановлено з, android:src="..."а не android:background="..."як фони встановлені за замовчуванням, щоб розтягнутись і підходити до виду.


фонова річ не допомогла вирішити проблему для мене, чи я щось роблю не так? перегляньте: stackoverflow.com/questions/14164473/…
Dheeraj Bhaskar

1
Це не піклується про співвідношення сторін, якщо ви жорстко
кодуєте

Як я можу змусити це вмістити весь екран тоді? Я хочу, щоб це все-таки було пропорційним
Ruchir Baronia

+1 для того, щоб сказати, що стосується android: src = "...", а не android: background = "...", це дуже важливо
DragonFire

20

використовуй це:

ImageView.setAdjustViewBounds(true);

4
Це в поєднанні з android:scaleType="fitXY"тим, що працювало. Дякую
smac89

@ smac89 Яка різниця між комбінацією та просто використанням FIT_CENTER? Не слід використовувати FIT_CENTER?
Дженікс

@ Дженікс, майте на увазі, що минулого часу я торкнувся Android, але я вважаю причину цього fitXY полягає в тому, що зображення розтягується пропорційно, щоб відповідати кадру / перегляду, яке воно було встановлено. Використання FIT_CENTERзвуків, як це просто розмістить зображення в центрі подання, але не заповнює подання. Я можу помилятися, але ви можете експериментувати з тим, щоб дізнатися, що працює
smac89

@ smac89 Перш ніж запитати, я вже тестував їх обох, і він працював так само. Мені було цікаво про причину, але тепер думаю, що ти не знав FIT_CENTER так само, як те, що я не знав про комбінацію, яку ти мені дав знати. :)
Дженікс

9

якщо ви використовуєте, android:scaleType="fitXY"то ви повинні вказати

android:layout_width="75dp" і android:layout_height="75dp"

якщо використовувати wrap_content, він не пошириться на те, що вам потрібно

<ImageView
android:layout_width="75dp"
android:layout_height="75dp"
android:id="@+id/listItemNoteImage"
android:src="@drawable/MyImage"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:layout_marginStart="12dp"
android:scaleType="fitXY"/>


2

Я використав цей android:scaleType="fitXY"код у Xml-файлі.


0

просто змініть висоту та ширину ImageView, щоб вона перетворила вміст і використовувала

exampleImage.setScaleType (ImageView.ScaleType.FIT_XY);

у вашому коді.


-11

Спробуйте використовувати:

imageview.setFitToScreen(true);
imageview.setScaleType(ScaleType.FIT_CENTER);

Це підійде для перегляду вашого зображення на екран із правильним співвідношенням.


12
"imageview.setFitToScreen (вірно);" - що це? якийсь недокументований метод?
Малахіаш

Я використовую затемнення, і це не компілює:imageview.setFitToScreen(true)
вчитель

5
Такого методу, як цей в андроїді, немає.
NightFury

Може, він мав на увазі setFitsSystemWindows()??
заборона-геоінженерія
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.