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.