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
Работает как шарм
— Дэйв о Грейди

119

Предоставьте XML-файл вашего макета android:scaleType="fitXY"
PS: это применимо, когда изображение установлено с, android:src="..."а не android:background="..."фон, установленный по умолчанию для растяжения и соответствия представлению.


фоновая вещь не помогла мне решить проблему, я что-то делаю не так? пожалуйста, взгляните на: stackoverflow.com/questions/14164473/…
— Дирадж Бхаскар

1
Это не заботится о соотношении сторон, если вы жестко задаете ширину изображений и хотите масштабировать высоту
— Акшат Агарвал

Как я могу сделать так, чтобы это поместилось на весь экран? Я хочу, чтобы он оставался пропорциональным
— Ручир Барония

+1 за говоря это относится к Android: SRC = "..." , а не андроид: фон = "..." это очень важно
— DragonFire

20

использовать это:

ImageView.setAdjustViewBounds(true);

4
Это в сочетании с android:scaleType="fitXY"тем, что сработало. Спасибо
— smac89

@ smac89 В чем разница между этой комбинацией и простым использованием FIT_CENTER? Не следует использовать FIT_CENTER?
— Дженикс

@Jenix, заметьте, прошло много времени с тех пор, как я последний раз касался Android, но я считаю, что причина в fitXYтом, что изображение растягивается пропорционально, чтобы соответствовать кадру / представлению, в котором оно было установлено. Использование FIT_CENTERзвуков, как будто оно просто поместит изображение в центре вида, но не заполняет его. Возможно, я ошибаюсь, но вы можете поэкспериментировать с любым из них, чтобы узнать, что работает
— smac89

@ smac89 Перед тем, как спросить, я уже протестировал их обоих, и они работали одинаково. Мне было интересно узнать причину, но теперь я думаю, что вы не знали FIT_CENTER, как и тот факт, что я не знал о комбинации, которую вы мне дали. :)
— Jenix

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"/>

7

Принятый ответ идеален, однако, если вы хотите сделать это из xml, вы можете использовать android:scaleType="fitXY"


2

Я использовал этот android:scaleType="fitXY"код в файле Xml.


0

просто измените высоту и ширину ImageView на wrap_content и используйте

exampleImage.setScaleType (ImageView.ScaleType.FIT_XY);

в вашем коде.


-11

Пробуем использовать:

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

Это поместит ваше изображение на экран с правильным соотношением сторон.


12
"imageview.setFitToScreen (истина);" - что это такое? какой-то недокументированный метод?
— Malachiasz

Я использую eclipse, и он не компилируется:imageview.setFitToScreen(true)
— ученик

5
В андроиде такого способа нет.
— NightFury

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