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.