Apa perbedaan antara fill_parent dan wrap_content?

276

Di Android, saat tata letak widget, apa bedanya fill_parent( match_parentdi API Level 8 dan lebih tinggi) dan wrap_content?

Apakah ada dokumentasi yang bisa Anda tunjuk? Saya tertarik untuk memahaminya dengan sangat baik.

pupeno
sumber
33
Perhatikan bahwa fill_parentnamanya diubah match_parentdi API Level 8 dan lebih tinggi.
gfrigon

Jawaban:

266

Atribut mana pun dapat diterapkan pada tampilan (kontrol visual) horizontal atau vertikal. Ini digunakan untuk mengatur ukuran Tampilan atau Tata Letak berdasarkan konten atau ukuran tata letak induknya daripada menentukan dimensi secara eksplisit.

fill_parent(tidak digunakan lagi dan diganti namanya MATCH_PARENTdi API Level 8 dan lebih tinggi)

Mengatur tata letak widget ke fill_parent akan memaksanya meluas untuk mengambil ruang sebanyak yang tersedia di dalam elemen tata letak tempat ia ditempatkan. Ini kira-kira setara dengan mengatur gaya dermaga Kontrol Bentuk Windows ke Fill.

Mengatur tata letak tingkat atas atau kontrol ke fill_parent akan memaksanya untuk mengambil seluruh layar.

wrap_content

Mengatur ukuran tampilan ke wrap_content akan memaksanya untuk memperluas hanya cukup jauh untuk mengandung nilai-nilai (atau kontrol anak) yang dikandungnya. Untuk kontrol - seperti kotak teks (TextView) atau gambar (ImageView) - ini akan membungkus teks atau gambar yang sedang ditampilkan. Untuk elemen tata letak, itu akan mengubah ukuran tata letak agar sesuai dengan kontrol / tata letak ditambahkan sebagai anak-anaknya.

Ini kira-kira setara dengan menyetel properti Windows Form Control Autosizeke True.

Dokumentasi Online

Ada beberapa detail dalam dokumentasi kode Android di sini .

Reto Meier
sumber
12
bagaimana jika lebar gambar lebih besar dari lebar layar dan saya menetapkan lebar tampilan gambar sebagai fill_parent. Apakah gambar akan dikompres ke ukuran layar?
John Watson
@ JohnWatson apakah Anda menemukan jawaban Anda? Saya juga ingin tahu.
Rachael
Ada baiknya untuk mengetahui properti setara dari Windows Form Control yang disebutkan.
Rempelos
Apa yang kamu lihat @JohnWatson? Apa ceritamu? Apa jawabannya ?
HopefullyHelpful
36

fill_parent(usang) =match_parent
Batas tampilan anak diperluas untuk mencocokkan perbatasan tampilan induk.

wrap_content
Batas tampilan anak membungkus kontennya sendiri.

Berikut adalah beberapa gambar untuk membuat semuanya lebih jelas. Hijau dan merah TextViews. Putih LinearLayoutmenunjukkan melalui.

masukkan deskripsi gambar di sini

Setiap View(a TextView, an ImageView, a Button, dll.) Perlu mengatur widthdan heighttampilan. Di file tata letak xml, yang mungkin terlihat seperti ini:

android:layout_width="wrap_content"
android:layout_height="match_parent"

Selain mengatur lebar dan tinggi ke match_parentatau wrap_content, Anda juga bisa mengaturnya ke beberapa nilai absolut:

android:layout_width="100dp"
android:layout_height="200dp"

Namun, secara umum itu tidak sebagus karena tidak fleksibel untuk perangkat dengan ukuran berbeda. Setelah Anda mengerti wrap_contentdan match_parent, hal selanjutnya yang harus dipelajari adalah layout_weight.

Lihat juga

XML untuk gambar di atas

LinearLayout Vertikal

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="width=wrap height=wrap"
        android:background="#c5e1b0"/>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="width=match height=wrap"
        android:background="#f6c0c0"/>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="width=match height=match"
        android:background="#c5e1b0"/>

</LinearLayout>

LinearLayout Horisontal

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="horizontal"
              android:layout_width="match_parent"
              android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="WrapWrap"
        android:background="#c5e1b0"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="WrapMatch"
        android:background="#f6c0c0"/>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="MatchMatch"
        android:background="#c5e1b0"/>

</LinearLayout>

Catatan

Penjelasan dalam jawaban ini mengasumsikan tidak ada margin atau bantalan . Tetapi kalaupun ada, konsep dasarnya masih sama. Batas tampilan / spasi hanya disesuaikan dengan nilai margin atau padding.

Suragch
sumber
9
  • fill_parent akan membuat lebar atau tinggi elemen menjadi sebesar elemen induk, dengan kata lain, wadah.

  • wrap_content akan membuat lebar atau tinggi menjadi sebesar yang dibutuhkan untuk mengandung elemen-elemen di dalamnya.

Klik di sini untuk Referensi DRO ANDROID

Setan
sumber
apa yang akan menjadi wadah? bagaimana cara mengelilingi tampilan dengan wadah yang berbeda?
Tejzeratul
2

fill_parent :

Komponen tata letak diatur untuk fill_parentakan wajib diperluas untuk mengisi anggota unit tata letak, sebanyak mungkin di ruang. Ini konsisten dengan properti dockstyle dari kontrol Windows. Tata letak atau kontrol yang ditetapkan atas fill_parentakan memaksanya untuk mengambil seluruh layar.

wrap_content

Siapkan tampilan ukuran wrap_contentakan dipaksa untuk melihat diperluas untuk menampilkan semua konten. The TextView dan ImageView kontrol, misalnya, diatur untuk wrap_contentakan menampilkan seluruh teks dan gambar internal. Elemen tata letak akan mengubah ukuran sesuai dengan konten. Siapkan tampilan ukuran atribut Autosize yang wrap_contentkurang lebih setara untuk mengatur kontrol Windows untuk True.

Untuk perinciannya Silakan Periksa tautan ini: http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html

IntelliJ Amiya
sumber