Apa perbedaan antara match_parent dan fill_parent?

Jawaban:

1235

Mereka adalah hal yang sama (di API Level 8+). Gunakan match_parent.

FILL_PARENT (berganti nama MATCH_PARENT di API Level 8 dan lebih tinggi), yang berarti bahwa tampilan ingin sebesar induknya (minus padding)

...

fill_parent: Tampilan harus sebesar induknya (minus padding). Konstanta ini tidak digunakan lagi mulai dari API Level 8 dan digantikan oleh match_parent.

http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html

Matt Ball
sumber
5
jika saya menulis aplikasi untuk 1.6 dan 2.2, saya akan menggunakan fill_parent untuk kompatibilitas, benarkan?
emeraldhieu
12
Pasti ada beberapa perbedaan bukan? Kalau tidak, mengapa Google tidak lagi menggunakannya dan mengganti nama yang baru?
stuckedoverflow
49
@ Halim Tidak, tidak ada perbedaan : Keduanya didefinisikan sebagai konstan -1. Saya Anda merasa lebih baik tentang hal itu, saya tidak mendapatkan kemajuan dalam hal itu baik ... :-)
arpy
2
@ jlovison Tidak, tidak ada perbedaan. Keduanya -1. Anda mendapatkan kesalahan karena platform lama tidak tahu tentang nama baru dari konstanta yang sama.
Tapirboy
16
Sangat aneh bahwa Android Studio masih menempatkan "fill_parent" di semua templat yang dibuat templat standar! Saya tahu mereka sama, tetapi saya terus kembali ke pertanyaan SO ini setiap tahun untuk memastikan tidak ada yang menemukan bahwa memang ada perbedaan. Bisakah tim Google / Android mengubah nilai default dari "fill_parent" menjadi "match_parent"? Terima kasih sebelumnya! :)
swooby
246

Google mengubah nama untuk menghindari kebingungan.

Masalah dengan nama lama fill parentadalah bahwa itu menyiratkan yang mempengaruhi dimensi induk, sementara match parentlebih baik menggambarkan perilaku yang dihasilkan - cocokkan dimensi dengan induk.

Kedua konstanta menyelesaikan -1pada akhirnya, dan menghasilkan perilaku yang identik dalam aplikasi. Ironisnya, perubahan nama ini dibuat untuk memperjelas hal-hal yang tampaknya telah menambah kebingungan daripada menghilangkannya.

Tapirboy
sumber
17
... kecuali dengan anak RelativeLayout dengan width = match_parent dan, katakanlah, tinggalkan yang lain. Itu tidak cocok dengan dimensi induknya, ia mengisi apa yang tersisa di dalamnya. Itu hanya berfungsi untuk PENYEBAB kebingungan.
kaay
7
Karena FILL_PARENT dan MATCH_PARENT berarti bahwa tampilan ingin sebesar induknya, minus lapisan induknya bukankah itu ruang interior daripada dimensi luar? Sekarang saya bahkan lebih bingung!
Caltor
@ Bnieland Saya telah menghapus referensi ke dimensi dalam dan luar karena mereka tidak setuju dengan dokumentasi google di developer.android.com/reference/android/view/… walaupun saya dapat melihat kutipan yang serupa (tidak berdasar) di sevennet.org / 2014/11/22 / ... di mana Anda mungkin mendapatkan informasi dari.
Caltor
28

Secara fungsional tidak ada perbedaan, Google baru saja mengubah nama dari fill_parent menjadi match_parent, dari API level 8 (Android 2.2). FILL_PARENT masih tersedia untuk alasan kompatibilitas.

LayoutParams.FILL_PARENTdan LayoutParams.MATCH_PARENTkeduanya memiliki nilai -1. Tidak yakin apa yang membuat Google tergoda untuk berubah dari Fill Parent ke Match Parent :)

Karena sebagian besar phones are >= Android 2.2.. Anda harus menggunakan Match Parent untuk kompatibilitas di masa depan ... tidak yakin kapan mereka akan menghentikan konstanta Fill Parent yang lebih lama!

Umair
sumber
11

Demi kompatibilitas, lebih baik tetap menggunakan fill_parent, yaitu, ketika mendukung perangkat API 8 di bawah ini. Tetapi jika aplikasi Anda menargetkan API 8 ke atas, Anda harus menggunakan match_parent sebagai gantinya.

Olumide Oyetoke
sumber
8
Hanya kompatibilitas mundur. Jika FILL_PARENTsudah usang (seperti yang disebutkan oleh Matt Ball di atas), maka satu-satunya pilihan untuk kompatibilitas ke depan adalah MATCH_PARENT.
2
Setuju tetapi jika Anda memiliki rencana untuk menulis kode untuk perangkat tingkat API yang lebih rendah mis: 2.3.2.2.2.1 untuk saat ini Anda perlu menggunakan FILL_PARENT. Saya punya beberapa masalah menggunakan match_parent untuk versi yang lebih lama.
MSA
saatnya untuk menghapus jawaban ini. Ini tidak relevan lagi dan dapat memberikan saran yang salah kepada pengembang baru
Tim
8

FILL_PARENTtidak lagi digunakan dalam API level 8 dan MATCH_PARENTmenggunakan API tingkat lebih tinggi

Avanish Kumar
sumber
8

match_parent digunakan sebagai pengganti fill_parent dan set itu untuk pergi sejauh orangtua berjalan. Cukup gunakan match_parent dan lupakan tentang fill_parent . Saya benar-benar membuang fill_parent dan semuanya sempurna seperti biasa.

Periksa di sini untuk informasi lebih lanjut.

Koech
sumber
6

Hanya untuk memberikan nama yang lebih dekat dengan tindakan aktualnya . "fill_parent"tidak mengisi ruang yang tersisa seperti namanya akan menyiratkan (untuk itu Anda menggunakan atribut bobot). Alih-alih, ini membutuhkan ruang sebanyak induk tata letaknya. Itu sebabnya nama baru itu"match_parent"

Jawad Zeb
sumber
2
Saya tidak mengerti logika orang ketika mereka menyatakan ini. Orang tua memiliki bantalan. Atau anak yang tersisa. Apakah anak itu cocok? Tidak. Apakah ini mengisi ruang yang tersisa? Di sini, di apa yang tampaknya Bizzarro World, kami menjawab: ya.
kaay
1
@ bahkan saya benar-benar setuju bahwa nama baru itu lebih buruk daripada yang lama. Tapi apa yang dikatakan Google berjalan.
Caltor
6

Keduanya memiliki fungsi yang sama. Perbedaannya hanyalah fill_parent digunakan hingga API level 8 dan match_parent digunakan setelah API level 8 atau lebih tinggi.

Praveen Gaur
sumber
6

Ketika Anda mengatur tata letak widthdan height seperti match_parentdalam XMLproperti, itu akan menempati area lengkap yang memiliki tampilan induk, yaitu akan sebesar sebesar induk.

<LinearLayout
    android:layout_width="300dp"
    android:layout_height="300dp"
    android:background="#f9b0b0">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#b0f9dc"/>

</LinearLayout>

Induk kelinci berwarna merah dan anak berwarna hijau. Anak-anak menempati semua area. Karena ini dulu widthdan height sekarang match_parent.

masukkan deskripsi gambar di sini

Catatan: Jika orang tua menggunakan bantalan maka ruang itu tidak akan disertakan.

<LinearLayout
    android:layout_width="300dp"
    android:layout_height="300dp"
    android:background="#f9b0b0"
    android:paddingTop="20dp"
    android:paddingBottom="10dp">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#b0f9dc"/>

</LinearLayout>

masukkan deskripsi gambar di sini

Jadi TextView hight = 300dp (induk hight) - (20 (paddingTop) +10 (paddingBottom)) = (300 - 30) dp = 270 dp

fill_parent Vs match_parent

fill_parent adalah nama sebelumnya dari match_parent

Untuk API Level 8 dan lebih tinggi fill_parentdinamai match_parentdan fill_parentsudah ditinggalkan sekarang.

Begitu fill_parentdan match_parentsama.

Dokumentasi API untuk fill_parent

Tampilan harus sebesar induknya (minus padding). Konstanta ini sudah usang mulai dari API Level 8 dan digantikan oleh {@code match_parent}.


sumber
4

match_parent, yang artinya tampilan ingin sebesar induknya (minus padding).

wrap_content, yang berarti bahwa tampilan hanya ingin cukup besar untuk melampirkan kontennya (plus padding)

Demi ilustrasi yang lebih baik, saya telah membuat tata letak sampel yang menunjukkan konsep ini. Untuk melihat efeknya, saya menambahkan batas setiap konten textView.

Dalam konten textView "Cocokkan orang tua", kita dapat melihat lebar tata letak itu menyebar dari panjang induknya.

Tapi kita bisa melihat di "Bungkus Konten" textView konten, lebar tata letak itu terbungkus dari konten (Bungkus Konten) panjangnya.

Tata Letak Android

Subarata Talukder
sumber
4

match_parent dan fill_parent merupakan properti yang sama, digunakan untuk menentukan lebar atau tinggi tampilan dalam layar penuh secara horizontal atau vertikal.

Properti ini digunakan dalam file xml android seperti ini.

 android:layout_width="match_parent"
 android:layout_height="fill_parent"

atau

 android:layout_width="fill_parent"
 android:layout_height="match_parent"

fill_parentdigunakan di versi sebelumnya, tetapi sekarang telah ditinggalkan dan diganti oleh match_parent. Saya harap ini akan membantu Anda.

Mansuu ....
sumber
3

fill_parent: Tampilannya harus sebesar induknya.

Sekarang, fill_parent ini sudah tidak digunakan lagi dan digantikan oleh match_parent.

Nikita Prajapati
sumber
3

Untuk saya mengisi induk dan induk pertandingan melakukan fungsi yang sama hanya itu:

fill parent : Digunakan sebelum API 8

match parent Ini digunakan dari API 8+ Fungsi Keduanya Mengisi tampilan induk selain padding

Xcode
sumber
2

FILL_PARENT diganti nama menjadi MATCH_PARENT di API Level 8 dan lebih tinggi yang berarti bahwa tampilan ingin sebesar induknya (dikurangi bantalan) - Google

Sarvesh Thiruppathi
sumber
2

FILL_PARENT dihentikan dari API level 8 dan lebih tinggi dan namanya diganti untuk versi atas sebagai MATCH_PARENT

Keduanya sama FILL_PARENTdan MATCH_PARENT, FILL_PARENTdigunakan dalam versi yang lebih rendah kurang dari API level 8 dan MATCH_PATENT digunakan di level API yang lebih tinggi lebih besar dari 8.

FILL_PARENT(berganti nama menjadi MATCH_PARENTAPI Level 8 dan lebih tinggi), yang berarti bahwa tampilan ingin sebesar induknya (minus padding)

fill_parent: Tampilan harus sebesar induknya (minus padding). Konstanta ini tidak digunakan lagi mulai dari API Level 8 dan digantikan oleh match_parent.

Untuk lebih jelasnya silakan kunjungi halaman ini

Utkarsh Srivastava
sumber
0

1. match_parent

Ketika Anda mengatur lebar dan tinggi tata letak sebagai match_parent, itu akan menempati area lengkap yang dimiliki oleh tampilan induk, yaitu ukurannya akan sebesar induknya.

Catatan : Jika orang tua menggunakan bantalan maka ruang itu tidak akan disertakan.

Ketika kami membuat layout.xml secara default, kami memiliki RelativeLayout sebagai tampilan induk default dengan android: layout_width = "match_parent" dan android: layout_height = "match_parent" yaitu ia menempati lebar dan tinggi layar ponsel sepenuhnya.

Perhatikan juga bahwa bantalan diterapkan ke semua sisi,

android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"

Sekarang mari kita tambahkan sub-view LinearLayout dan set layout_width = "match_parent" dan layout_height = "match_parent", tampilan grafis akan menampilkan sesuatu seperti ini,

match_parent_example

Kode

xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.code2care.android.togglebuttonexample.MainActivity" >

android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="11dp"
android:background="#FFFFEE"
android:orientation="vertical" >

2. fill_parent:

Ini sama dengan match_parent, fill_parent didepresiasi di API level 8. Jadi, jika Anda menggunakan API level 8 atau lebih, Anda harus menghindari penggunaan fill_parent

Mari kita ikuti langkah yang sama seperti yang kita lakukan untuk match_parent, alih-alih gunakan fill_parent di mana-mana.

Anda akan melihat bahwa tidak ada perbedaan perilaku di kedua fill_parent dan pertandingan induk.

hossam scott
sumber