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?


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"

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.


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

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"/>

7

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


2

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


0

cukup ubah tinggi dan lebar ImageView Anda ke wrap_content dan gunakan

exampleImage.setScaleType (ImageView.ScaleType.FIT_XY);

dalam kode Anda.


-11

Mencoba menggunakan:

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

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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.