Match_parent ve fill_parent arasındaki fark nedir?


Yanıtlar:


1235

Aynı şeydir (API Seviye 8+). Kullanın match_parent.

FILL_PARENT (API Seviye 8 ve üstü sürümde MATCH_PARENT olarak yeniden adlandırıldı); bu, görünümün üst öğesi (eksi dolgu) kadar büyük olmasını istediği anlamına gelir

...

fill_parent: Görünüm ebeveyni kadar büyük olmalıdır (eksi dolgu). Bu sabit, API Seviye 8'den başlayarak kullanımdan kaldırılmıştır ve onunla değiştirilmiştir match_parent.

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


5
Hem 1.6 hem de 2.2 için uygulama yazarsam, uyumluluk için fill_parent kullanacağım, değil mi?
emeraldhieu

12
Bazı farklılıklar olmalı değil mi? Aksi halde Google neden onu kullanımdan kaldırdı ve yenisini yeniden adlandırdı?
stuckedoverflow

49
@Halim Hayır, fark yoktur : Her ikisi de sabit olarak tanımlanır -1. Ben bu konuda daha iyi hissediyorum, ben de bu
gelişme var alamadım

2
@jlovison Hayır, fark yok. Her ikisi de -1. Hatayı alıyorsunuz çünkü eski platform aynı sabitin yeni adını bilmiyor.
Tapirboy

16
Android Studio'nun, oluşturulan tüm varsayılan şablon düzenlerine hala "fill_parent" koyması çok garip! Aynı olduklarını biliyorum, ama kimsenin gerçekten bir fark olduğunu keşfetmediğinden emin olmak için her yıl bu SO sorusuna geri dönmeye devam ediyorum. Google / Android ekibi lütfen varsayılan değeri "fill_parent" yerine "match_parent" olarak değiştirebilir mi? Şimdiden teşekkürler! :)
swooby

246

Google, karışıklığı önlemek için adı değiştirdi.

Eski adla ilgili sorun fill parent, üst öğenin boyutlarını etkilediğini ima etmesiydi, match parentsonuçta ortaya çıkan davranışı daha iyi açıkladı - boyutu üst öğeyle eşleştirin.

Her iki sabit -1de sonunda çözülür ve böylece uygulamada aynı davranışla sonuçlanır. İronik bir şekilde, şeyleri açıklığa kavuşturmak için yapılan bu isim değişikliği, onu ortadan kaldırmak yerine karışıklık ekledi.


17
... RelativeLayout'un width = match_parent olan ve diyelim ki başka bir tane bırakan çocuğu hariç. Ebeveyninin boyutuna uymuyor, içinde kalanları dolduruyor. Bu sadece karışıklığa neden olur.
kaay

7
FILL_PARENT ve MATCH_PARENT, görünümün üst öğesi kadar büyük olmak istediği anlamına gelir, eksi ebeveynin dolgusu dış boyutlardan ziyade iç alan değil midir? Şimdi daha da kafam karıştı!
Caltor

onlar hakkında belgeleri kabul yok gibi @bnieland bir iç ve dış boyutlara referans kaldırdık developer.android.com/reference/android/view/... I benzer bir (yoksun) alıntı görebilir, ancak sevennet.org / 2014/11/22 /… bilginizi buradan alabilirsiniz.
Caltor

28

İşlevsel olarak hiçbir fark yok, Google adı API_8 seviyesinden (Android 2.2) fill_parent yerine match_parent olarak değiştirdi. FILL_PARENT uyumluluk nedeniyle hala kullanılabilir.

LayoutParams.FILL_PARENTve LayoutParams.MATCH_PARENTher ikisi de -1 değerine sahiptir. Google'ın Dolgu Ebeveyninden Eşleşen Ebeveyn'e ne gibi bir değişiklik yapıldığından emin değilim :)

Çoğu yana phones are >= Android 2.2.. onlar eski Dolgu Veli sabiti durduracağız emin olduğunda ... gelecekteki uyumluluğu için Karşılaşma Veli kullanmalısınız!


11

Uyumluluk uğruna, fill_parent'a bağlı kalmak daha iyidir, yani API 8 cihazlarının altında desteklenirken. Ancak uygulamanız API 8'i ve üstünü hedefliyorsa, bunun yerine match_parent kullanmalısınız.


8
Gerçi sadece geriye dönük uyumluluk. Eğer FILL_PARENT(yukarıda Matt Ball tarafından belirtildiği gibi) uygun bulunmamaktadır, sonra ileriye uyumluluk için tek seçenektir MATCH_PARENT.

2
Kabul edin, ancak daha düşük API düzeyindeki cihazlar için kod yazmayı planlıyorsanız örn: 2.3,2.2,2.1 FILL_PARENT kullanmanız gerekir. Eski sürümler için match_parent kullanırken bazı sorunlar yaşadım.
MSA

bu cevabı silme zamanı. Artık alakalı değil ve yeni geliştiricilere yanlış tavsiye verebilir
Tim

8

FILL_PARENTAPI düzey 8'de kullanımdan kaldırıldı ve daha yüksek MATCH_PARENTdüzeyli API kullan


8

match_parent , fill_parent yerine kullanılır ve üst öğe kadar ileri gidecek şekilde ayarlar. Sadece match_parent kullanın ve fill_parent'ı unutun . Ben tamamen fill_parent ve hendek her şey her zamanki gibi mükemmel.

Kontrol buraya daha fazlası.


6

Gerçek eylemine daha yakın bir isim vermek için . "fill_parent"adından da anlaşılacağı gibi kalan alanı doldurmaz (bunun için ağırlık özelliğini kullanırsınız). Bunun yerine, düzen üst öğesi kadar yer kaplar. Bu yüzden yeni isim"match_parent"


2
Bunu ifade ettiklerinde insanların mantığını anlamıyorum. Ebeveynin yastığı var. Ya da çocuk diğerinden kaldı. Çocuk eşleşiyor mu? Hayır. Kalan alanı dolduruyor mu? Görünüşe göre Bizzarro World'de cevap veriyoruz: evet.
kaay

1
@kaay Tamamen yeni adın eskisinden daha kötü olduğunu kabul ediyorum. Ancak Google'ın söyledikleri gidiyor.
Caltor

6

Her ikisi de benzer işlevselliğe sahip tek fark, dolgu_parent'ın API seviye 8'e kadar ve match_parent ise API seviye 8 veya üzeri seviyeden sonra kullanılmasıdır.


6

Eğer düzeni ayarlandığında widthve height olarak match_parentiçinde XMLmülkiyet bunun ana görünümü vardır komple alanını işgal edecek, yani o ebeveyn kadar büyük olacaktır.

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

Tavşan ebeveyn kırmızı, çocuk yeşil. Çocuk tüm alanı işgal eder. Çünkü öyle widthve height öyle match_parent.

resim açıklamasını buraya girin

Not: Ebeveyne bir dolgu uygulanırsa, bu alan dahil edilmez.

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

resim açıklamasını buraya girin

TextView yüksekliği = 300dp (ana yükseklik) - (20 (paddingTop) +10 (paddingBottom)) = (300-30) dp = 270 dp

fill_parent Vs match_parent

fill_parent önceki adı match_parent

API Seviye 8 ve üstü için şimdi fill_parentolarak yeniden adlandırıldı match_parentve fill_parentkullanımdan kaldırıldı.

Yani fill_parentve match_parentaynı.

Fill_parent için API Belgeleri

Görünüm, ebeveyni kadar büyük olmalıdır (eksi dolgu). Bu sabit, API Düzey 8'den başlayarak kullanımdan kaldırılmıştır ve yerine {@code match_parent} getirilmiştir.


4

match_parent, görünümün üst öğesi (eksi dolgu) kadar büyük olmasını istediği anlamına gelir.

wrap_content, bu da görünümün içeriğini kapsayacak kadar büyük olmasını istediği anlamına gelir (artı dolgu)

Daha iyi gösterim amacıyla, bu konsepti gösteren örnek bir düzen oluşturdum. Etkisini görmek için her textView içeriğinin kenarlığını ekledim.

"Üst öğeyi eşleştir" textView içeriğinde, yerleşim genişliğinin üst öğesinin tüm uzunluğundan yayıldığını görebiliriz.

Ancak "İçeriği Kaydır" textView içeriğini görebiliriz, içerik genişliği (İçeriği Kaydır) uzunluğunda sarılmış mizanpaj genişliği.

Android Düzeni


4

match_parent ve fill_parent bir görünümün tam ekranda yatay veya dikey olarak genişliğini veya yüksekliğini tanımlamak için kullanılan aynı özelliktir.

Bu özellikler böyle android xml dosyalarında kullanılır.

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

veya

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

fill_parentönceki sürümlerde kullanıldı, ancak şimdi kullanımdan kaldırıldı ve onun yerini aldı match_parent. Umarım sana yardımcı olur.


3

fill_parent: Görünüm, üst öğesi kadar büyük olmalıdır.

şimdi bu içerik fill_parent kullanımdan kaldırıldı ve yerine match_parent kullanıldı.


3

Bana göre üst ve eşleştirme üst öğesi aynı işlevi yalnızca şu şekilde gerçekleştirir:

üst ebeveyn : API 8'den önce kullanıldı

Eşleşen üst öğe Bu, API 8+ Her İkisinin İşlevi'nden kullanıldı Ana görünümü doldurmayı dolgu olarak doldurur


2

FILL_PARENT, API Seviye 8 ve üstü sürümde MATCH_PARENT olarak yeniden adlandırıldı; bu, görünümün üst öğesi (eksi dolgu) kadar büyük olmasını istediği anlamına gelir - Google


2

FILL_PARENT API seviye 8 ve üstü kullanımdan kaldırılmıştır ve üst sürümler olarak yeniden adlandırılmıştır. MATCH_PARENT

Her ikisi de aynıdır FILL_PARENTve MATCH_PARENT, FILL_PARENT8 den daha yüksek API seviyesi de yükselir kullanılan API seviyesi 8 ve MATCH_PATENT daha az düşük bir versiyonu kullanıldı.

FILL_PARENT( MATCH_PARENTAPI Seviye 8 ve üstü olarak yeniden adlandırılmıştır ); bu, görünümün üst öğesi kadar büyük olmasını istediği anlamına gelir (eksi dolgu)

fill_parent: Görünüm ebeveyni kadar büyük olmalıdır (eksi dolgu). Bu sabit, API Seviye 8'den başlayarak kullanımdan kaldırılmıştır ve onunla değiştirilmiştir match_parent.

Daha fazla ayrıntı için lütfen bu sayfayı ziyaret edin


0

1. match_parent

Düzen genişliğini ve yüksekliğini match_parent olarak ayarladığınızda, üst görünümün sahip olduğu tüm alanı kaplar, yani üst öğe kadar büyük olur.

Not : Ebeveyne bir dolgu uygulanırsa, bu alan dahil edilmez.

Varsayılan olarak bir layout.xml oluşturduğumuzda, android ile ana ebeveyn görünümü olarak RelativeLayout'a sahibiz: layout_width = "match_parent" ve android: layout_height = "match_parent" yani mobil ekranın tüm genişliğini ve yüksekliğini kaplar.

Ayrıca dolgu malzemesinin her tarafa uygulandığını,

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

Şimdi bir alt görünüm LinearLayout ekleyelim ve layout_width = "match_parent" ve layout_height = "match_parent" ayarını yapalım, grafiksel görünüm şöyle bir şey gösterir,

match_parent_example

kod

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. dolgu_eklemi:

Bu match_parent ile aynıdır, fill_parent API seviye 8'de amortismana tabi tutulmuştur. Dolayısıyla API 8 veya üstü seviye kullanıyorsanız fill_parent kullanmaktan kaçınmalısınız

Hadi match_parent için yaptığımız adımların aynısını izleyelim, bunun yerine her yerde fill_parent kullanın.

Hem fill_parent hem de match parent öğelerinde davranış farkı olmadığını görürsünüz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.