Fill_parent ve wrap_content arasındaki fark nedir?


276

Android'de, widget'ları düzenlerken fill_parent( match_parentAPI Seviye 8 ve üstü) ve arasındaki fark wrap_contentnedir?

İşaret edebileceğiniz herhangi bir belge var mı? Çok iyi anlamak istiyorum.


33
O notu al fill_parentdeğiştirildi match_parentAPI Seviye 8 ve üzeri.
gfrigon

Yanıtlar:


266

Her iki özellik de Görünüm'ün (görsel kontrol) yatay veya dikey boyutuna uygulanabilir. Açıkça bir boyut belirtmek yerine, içeriğine veya üst mizanpajının boyutuna göre bir Görünüm veya Mizanpaj boyutu ayarlamak için kullanılır.

fill_parent( MATCH_PARENTAPI Seviye 8 ve daha yeni sürümlerde kullanımdan kaldırıldı ve yeniden adlandırıldı )

Widget düzenini fill_parent olarak ayarlamak, yerleştirildiği düzen öğesinde kullanılabilir olduğu kadar yer kaplaması için genişlemeye zorlar. Bir Windows Form Denetiminin dockstyle'ı olarak ayarlamak kabaca eşdeğerdir Fill.

Fill_parent için bir üst seviye düzen veya kontrol ayarlamak, onu tüm ekranı kaplamaya zorlar.

wrap_content

Bir Görünümün boyutunu wrap_content olarak ayarlamak, onu içerdiği değerleri (veya alt denetimleri) içerecek kadar genişletmeye zorlar. Metin kutuları (TextView) veya resimler (ImageView) gibi kontroller için bu, gösterilen metni veya resmi sarar. Düzen öğeleri için, alt öğesi olarak eklenen denetimlere / düzenlere uyacak şekilde düzeni yeniden boyutlandıracaktır.

Bu, bir Windows Form Denetimi Autosizeözelliğini True olarak ayarlamakla eşdeğerdir .

Çevrimiçi Belgeler

Burada Android kodu belgelerinde bazı ayrıntılar var .


12
görüntü genişliği ekran genişliğinden daha büyükse ve görüntü görüntüleme genişliğini fill_parent olarak ayarlarsam. görüntü ekran boyutuna sıkıştırılacak mı?
John Watson

@JohnWatson cevabını buldun mu? Ben de merak ediyorum.
Rachael

Belirtilen Windows Form Denetimi'nin eşdeğer özelliklerini bilmek iyidir.
Rempelos

@ JohnWatson'da ne gördün? Hikayen ne ? Cevap nedir?
HopefullyHelpful

36

fill_parent(kullanımdan kaldırıldı) =match_parent
Alt görünümün kenarlığı, üst görünümün kenarlığına uyacak şekilde genişler.

wrap_content
Çocuk görünümünün sınırı kendi içeriğinin etrafına sarar.

İşte işleri daha net hale getirmek için bazı görüntüler. Yeşil ve kırmızı TextViews. Beyaz bir LinearLayoutgösteri.

resim açıklamasını buraya girin

Her View(a TextView, an ImageView, a Button, vb.) Görünümün widthve değerini ayarlamalıdır height. Xml mizanpaj dosyasında bu şöyle görünebilir:

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

Genişliği ve yüksekliği match_parentveya olarak ayarlamanın yanı sıra wrap_content, bunları mutlak bir değere de ayarlayabilirsiniz:

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

Genel olarak bu iyi değildir, çünkü farklı boyutlardaki cihazlar için esnek değildir. Anladıktan sonra wrap_contentve match_parentöğrenilecek bir sonraki şey layout_weight.

Ayrıca bakınız

Yukarıdaki resimler için XML

Dikey Doğrusal Düzen

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

Yatay Doğrusal Tasarım

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

Not

Bu cevaptaki açıklamada kenar boşluğu veya dolgu olmadığı varsayılmaktadır . Ancak olsa bile, temel kavram hala aynıdır. Görünüm kenarlığı / aralığı sadece kenar boşluğu veya dolgu değerine göre ayarlanır.


9
  • fill_parent elemanın genişliğini veya yüksekliğini ana eleman, yani konteyner kadar büyük yapar.

  • wrap_content genişliği veya yüksekliği, içindeki öğeleri içermek için gerektiği kadar büyük hale getirecektir.

ANDROID DOC Referansı için buraya tıklayın


konteyner ne olacak? görünümleri farklı kaplarla nasıl çevreleyebilirim?
Tejzeratul

2

fill_parent :

Bir bileşen, fill_parentdüzende yer alan birim alanlarını mümkün olduğunca doldurmak için genişletilmesi zorunlu olacak şekilde düzenlenmiştir . Bu, Windows denetiminin dockstyle özelliğiyle tutarlıdır. Bir üst ayar düzeni veya kontrolü fill_parenttüm ekranı kaplamaya zorlar.

wrap_content

Görüntülemek wrap_contentzorunda kalacağınız boyutta bir görünüm tüm içeriği göstermek için genişletilir. TextView'un ve ImageView kontrolleri, örneğin, ayarlandığında wrap_content, tüm iç metin ve resim gösterecektir. Düzen öğeleri, içeriğe göre boyutu değiştirir. wrap_contentTrue için bir Windows denetimi ayarlamak üzere kabaca eşdeğer Otomatik Boyut özniteliğinin boyutunun bir görünümünü ayarlayın .

Ayrıntılar için lütfen bu bağlantıya göz atın: http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html

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.