android: meregangkan gambar dalam tampilan gambar agar sesuai layar

126

Saya memiliki imageviewyang memiliki tinggi dan lebar diatur ke fill_parentdengan linearlayoutyang memiliki nilai yang sama ditetapkan. Jadi saya kira ini harus mengatur gambar saya agar sesuai dengan layar. Tetapi hanya cocok seperti 80% (margin atas dan bawah dalam mode lansekap).

Saya sudah mencoba kode berikut ini tanpa hasil:

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

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

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

Ada ide lain?

Johan
sumber
Meskipun ini masalah yang sedikit berbeda, jawaban ini akan membantu Anda.
fredley

Jawaban:

317

untuk mengubah penggunaan pro-gramatikal:

imgview.setScaleType(ScaleType.FIT_XY);

ATAU

untuk mengubah dari penggunaan xml:

 android:scaleType="fitXY"
Pinki
sumber
26
Saya tahu ini yang Anda inginkan, tetapi untuk gambar di mana Anda peduli dengan aspek rasio, ini akan merentangkannya.
Artem Russakovskii
Bekerja sangat baik untuk ImageView di dalam ScrollView. Bahkan aspeknya tetap benar.
JNissi
10
Hal yang sama dapat didefinisikan dalam tata letak xml, android: scaleType = "fitXY"
Sathesh
9
Untuk membuat gambar memenuhi semua area dan menjaga rasio aspek yang baik gunakanv.setAdjustViewBounds(true); v.setScaleType(ImageView.ScaleType.CENTER_CROP);
Marco Florian
1
Bekerja seperti pesona
dave o grady
119

Berikan dalam file xml tata letak Anda android:scaleType="fitXY"
PS: ini berlaku untuk ketika gambar diatur dengan android:src="..."daripada android:background="..."latar belakang ditetapkan secara default untuk meregangkan dan sesuai dengan Tampilan.

Sen
sumber
hal latar belakang tidak membantu menyelesaikan masalah bagi saya, apakah saya melakukan sesuatu yang salah? silakan lihat di: stackoverflow.com/questions/14164473/…
Dheeraj Bhaskar
1
Ini tidak menangani rasio aspek jika Anda mengubah kode lebar gambar dan menginginkan tinggi skala
Akshat Agarwal
Bagaimana saya bisa mendapatkan ini agar sesuai dengan seluruh layar? Saya ingin itu tetap proporsional
Ruchir Baronia
+1 untuk memberi tahu itu berlaku untuk android: src = "..." daripada android: background = "..." ini sangat penting
DragonFire
20

Gunakan ini:

ImageView.setAdjustViewBounds(true);
Lalit kumar
sumber
4
Ini dikombinasikan dengan android:scaleType="fitXY"apa yang berhasil. Terima kasih
smac89
@ smac89 Apa perbedaan antara kombinasi itu dan hanya menggunakan FIT_CENTER? Tidak boleh menggunakan FIT_CENTER?
Jenix
@Jenix, ingatlah, sudah lama saya tidak menyentuh Android, tapi saya yakin alasannya fitXYadalah agar gambar diregangkan secara proporsional agar sesuai dengan bingkai / tampilan yang diatur. Menggunakan FIT_CENTERsuara seperti itu hanya akan menempatkan gambar di tengah tampilan tetapi tidak memenuhi tampilan. Saya mungkin salah, tetapi Anda dapat bereksperimen dengan baik untuk mencari tahu apa yang berhasil
smac89
@ smac89 Sebelum bertanya, saya sudah menguji keduanya dan itu bekerja sama. Saya ingin tahu tentang alasannya tetapi sekarang saya pikir Anda tidak tahu FIT_CENTER seperti halnya saya tidak tahu tentang kombinasi yang Anda beri tahu. :)
Jenix
9

jika Anda menggunakan android:scaleType="fitXY"maka Anda harus menentukan

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

jika menggunakan wrap_content tidak akan sesuai dengan yang Anda butuhkan

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

Jawaban yang diterima sempurna, namun jika Anda ingin melakukannya dari xml, Anda dapat menggunakannya android:scaleType="fitXY"

Bibaswann Bandyopadhyay
sumber
2

Saya telah menggunakan android:scaleType="fitXY"kode ini dalam file Xml.


sumber
0

cukup ubah tinggi dan lebar ImageView Anda ke wrap_content dan gunakan

exampleImage.setScaleType (ImageView.ScaleType.FIT_XY);

dalam kode Anda.

Ankur Yadav
sumber
-11

Mencoba menggunakan:

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

Ini akan sesuai tampilan gambar Anda ke layar dengan rasio yang benar.

Lincy
sumber
12
"imageview.setFitToScreen (true);" - apa itu? beberapa metode tidak berdokumen?
Malachiasz
Saya menggunakan gerhana dan ini tidak mengkompilasi:imageview.setFitToScreen(true)
pelajar
5
Tidak ada metode seperti ini di android.
NightFury
Mungkin maksudnya setFitsSystemWindows()??
Larangan geoengineering