android: esticar a imagem no imageview para caber na tela

126

Eu tenho um imageviewque tem sua altura e largura definidas como fill_parentcom umlinearlayout que tem os mesmos valores definidos. Então, suponho que isso deve definir minhas imagens para caber na tela. Mas cabe apenas 80% (margem superior e inferior no modo paisagem).

Eu tentei o seguinte código sem sucesso:

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

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

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

Alguma outra ideia?

Johan
fonte
Embora seja um problema ligeiramente diferente, esta resposta deve ajudá-lo.
fredley

Respostas:

317

para alterar de forma programática, use:

imgview.setScaleType(ScaleType.FIT_XY);

OU

para mudar do uso de xml:

 android:scaleType="fitXY"
Pinki
fonte
26
Eu sei que é isso que você queria, mas para imagens em que você se preocupa com a proporção, isso vai esticá-lo.
Artem Russakovskii
Faz maravilhas para ImageView dentro de um ScrollView. Até o aspecto é mantido correto.
JNissi
10
O mesmo pode ser definido no layout xml, android: scaleType = "fitXY"
Sathesh
9
Para fazer o preenchimento de imagem toda a área e manter um uso boa relação aspectov.setAdjustViewBounds(true); v.setScaleType(ImageView.ScaleType.CENTER_CROP);
Marco Florian
1
Funciona como um encanto
dave o grady 26/03
119

Forneça o arquivo xml do seu layout android:scaleType="fitXY"
PS: isso se aplica a quando a imagem é definida com android:src="..."e não android:background="..."como os fundos são definidos por padrão para esticar e ajustar à Visualização.

Sen
fonte
a coisa de fundo não ajudou a resolver o problema para mim, estou fazendo algo errado? dê uma olhada em: stackoverflow.com/questions/14164473/…
Dheeraj Bhaskar
1
Isso não se preocupa com a proporção, se você codificar a largura das imagens e desejar que a altura seja dimensionada
Akshat Agarwal
Como faço para que isso caiba na tela inteira? Eu quero que ele ainda ser proporcional
Ruchir Baronia
+1 para dizer que se aplica a android: src = "..." ao invés de android: background = "..." isso é muito importante
DragonFire
20

usa isto:

ImageView.setAdjustViewBounds(true);
Lalit kumar
fonte
4
Isto em combinação com android:scaleType="fitXY"é o que funcionou. Graças
smac89
@ smac89 Qual é a diferença entre essas combinações e apenas o uso de FIT_CENTER? Não deve usar FIT_CENTER?
Jenix
@Jenix, lembre-se de que já faz um tempo desde que eu toquei o Android pela última vez, mas acredito que a razão para isso fitXYé que a imagem é esticada proporcionalmente para ajustar-se ao quadro / visualização em que foi inserida. Usar FIT_CENTERsons como esses apenas colocará a imagem no centro da vista, mas não a preenche. Posso estar errado, mas você pode experimentar com qualquer um para descobrir o que funciona
smac89
@ smac89 Antes de perguntar, eu já testei os dois e funcionou da mesma forma. Fiquei curioso sobre o motivo, mas agora acho que você não conhecia FIT_CENTER, assim como o fato de eu não conhecer a combinação que você me informou. :)
Jenix 2/17
9

se você usar android:scaleType="fitXY", você deve especificar

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

se usar wrap_content, não se estenderá ao que você precisa

<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
fonte
7

A resposta aceita é perfeita, no entanto, se você quiser fazer isso em xml, poderá usar android:scaleType="fitXY"

Bibaswann Bandyopadhyay
fonte
2

Eu usei esse android:scaleType="fitXY"código no arquivo XML.


fonte
0

basta alterar a altura e a largura do ImageView para wrap_content e usar

exampleImage.setScaleType (ImageView.ScaleType.FIT_XY);

no seu código.

Ankur Yadav
fonte
-11

Tentando usar:

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

Isso ajustará sua visualização de imagem à tela com a proporção correta.

Lincy
fonte
12
"imageview.setFitToScreen (true);" - o que é isso? algum método não documentado?
Malachiasz
Eu estou usando o eclipse e isso não compila:imageview.setFitToScreen(true)
aluno
5
Não existe esse método no Android.
NightFury 03/04
Talvez ele quis dizer setFitsSystemWindows()?
ban-geoengineering