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.