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.