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);

Есть другие идеи?

Johan
источник
Хотя это немного другая проблема, этот ответ должен вам помочь.
fredley

Ответы:

317

чтобы изменить программно, используйте:

imgview.setScaleType(ScaleType.FIT_XY);

ИЛИ

для перехода от использования xml:

 android:scaleType="fitXY"
Pinki
источник
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"/>
Ozear
источник
7

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

Bibaswann Bandyopadhyay
источник
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()??
бан-геоинжиниринг