android: görüntüyü ekrana sığacak şekilde uzat


126

Bir sahip imageviewolan bir yükseklik ve genişlik grubu olduğu fill_parentbir ile linearlayoutaynı değerlere sahip olduğuna göre. Sanırım bu, resimlerimi ekrana sığacak şekilde ayarlamalı. Ancak yalnızca% 80'e kadar sığar (yatay modda üst ve alt kenar boşluğu).

Aşağıdaki kodu başarıyla denedim:

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

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

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

Başka fikrin var mı?


Biraz farklı bir sorun olsa da, bu cevap size yardımcı olacaktır.
fredley

Yanıtlar:


317

programlı olarak değiştirmek için şunları kullanın:

imgview.setScaleType(ScaleType.FIT_XY);

VEYA

xml kullanımından değiştirmek için:

 android:scaleType="fitXY"

26
İstediğin şeyin bu olduğunu biliyorum, ancak en boy oranını önemsediğin görüntüler için bu, onu uzatacaktır.
Artem Russakovskii

ScrollView içinde ImageView için harikalar yaratır. Görünümü bile doğru tutulur.
JNissi

10
Aynı şey xml düzeninde de tanımlanabilir, android: scaleType = "fitXY"
Sathesh

9
Görüntünün tüm alanı doldurmasını ve iyi bir en boy oranını korumasını sağlamak içinv.setAdjustViewBounds(true); v.setScaleType(ImageView.ScaleType.CENTER_CROP);
Marco Florian

1
Cazibe gibi çalışıyor
Dave o grady

119

Mizanpajınızın xml dosyasını verin android:scaleType="fitXY"
PS: Bu , arka planların varsayılan olarak Görünüme genişleyip sığacak şekilde ayarlanması android:src="..."yerine görüntü ile ayarlandığında geçerlidir android:background="...".


arka plan sorunu benim için sorunu çözmeye yardımcı olmadı, yanlış bir şey mi yapıyorum? lütfen bir göz atın: stackoverflow.com/questions/14164473/…
Dheeraj Bhaskar

1
Görüntülerin genişliğini sabit bir şekilde
kodlarsanız

O halde bunu tüm ekrana sığdırmak için nasıl sağlayabilirim? Hala orantılı olmasını istiyorum
Ruchir Baronia

+1, android: background = "..." yerine android: src = "..." için geçerlidir bu çok önemlidir
DragonFire

20

bunu kullan:

ImageView.setAdjustViewBounds(true);

4
Bu, birlikte android:scaleType="fitXY"işe yarayan şeydi. Teşekkürler
smac89

@ smac89 Bu kombinasyon ile sadece FIT_CENTER kullanmak arasındaki fark nedir? FIT_CENTER kullanmamalı mı?
Jenix

@Jenix, Android'e en son dokunduğumdan bu yana epey zaman geçtiğini unutmayın, ancak bunun nedeninin fitXYgörüntünün ayarlandığı çerçeveye / görünüme uyacak şekilde orantılı olarak uzatılması olduğuna inanıyorum . Bu FIT_CENTERsesler sadece görüntüyü yerleştirecektir görünümün merkezinde yer alır ancak görünümü doldurmaz. Yanılıyor olabilirim, ancak neyin işe yaradığını bulmak için ikisini de deneyebilirsiniz
smac89

@ smac89 Sormadan önce ikisini de test ettim ve aynı şekilde çalıştı. Sebebini merak ediyordum ama şimdi tıpkı bana bildirdiğiniz kombinasyonu bilmediğim gerçeği gibi FIT_CENTER'ı bilmediğinizi düşünüyorum. :)
Jenix

9

kullanırsanız android:scaleType="fitXY", belirtmelisiniz

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

wrap_content kullanırsanız, ihtiyacınız olanı genişletmez

<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

Bu android:scaleType="fitXY"kodu Xml dosyasında kullandım.


0

sadece ImageView yüksekliğini ve genişliğini wrap_content olarak değiştirin ve

exampleImage.setScaleType (ImageView.ScaleType.FIT_XY);

kodunuzda.


-11

Kullanmaya çalışıyorum:

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

Bu, görüntü görünümünüzü ekrana doğru oranla sığdıracaktır.


12
"imageview.setFitToScreen (doğru);" - o nedir? belgelenmemiş bir yöntem?
Malachiasz

Tutulma kullanıyorum ve bu derlemez:imageview.setFitToScreen(true)
öğrenci

5
Android'de böyle bir yöntem yok.
NightFury

Belki de demek istedi setFitsSystemWindows()?
ban-jeomühendislik
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.