2011-12-15 9 views
60

Okazało się, że zarówno fill_parent i match_parent oznacza to samojest przestarzałe słowo Jedyna różnica między fill_parent i match_parent

  • fill_parent oznacza, że ​​widok chce być tak duży jak jego rodzic, minus wyściółka rodzica , Jeśli w ogóle.
  • match_parent oznacza, że ​​widok ma być tak duży, jak jego rodzic, minus dopełnienie rodzica, jeśli takie istnieje.

Jedyna różnica, że ​​znalazłem to, że fill_parent jest przestarzała począwszy od API poziomu 8 i został zastąpiony przez match_parent

Jednak nie zauważyłem żadnej różnicy pomiędzy tymi dwoma. Jeśli oba są takie same, dlaczego jest fill_parent przestarzałe. Czy ktoś może wyjaśnić jakiekolwiek różnice między tymi dwoma, z wyjątkiem faktu, że jeden jest przestarzały, a drugi nie jest?

I już przez http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html

+0

Posiadanie dwóch metod w API, które robią to samo, jest jednym z powodów, dla których należy wycofać metodę. – fyr

+0

Więcej informacji na ten http://stackoverflow.com/questions/5761960/what-is-the-difference-between-match-parent-and-fill-parent-property-in-android – vnshetty

Odpowiedz

79

Tak jak powiedziałeś, są dokładnie takie same. Jak powiedział Romain Guy, zmienili nazwę, ponieważ "fill_parent" było mylące dla programistów. W związku z tym, "fill_parent" nie wypełnia pozostałej przestrzeni (w tym przypadku używasz atrybutu weight), ale zajmuje tyle miejsca, co jej macierzysty układ. Dlatego nowa nazwa to "match_parent".

7

wyrobiłem w Android wystarczająco długo, aby również uświadomić sobie, że wydaje się, że nie ma różnicy z wyjątkiem gdy chcesz uruchomić na starszych API. Chciałbym użyć fill_parent, ponieważ robię wszystkie moje aplikacje z minimalnym API 7. Również na marginesie, ponieważ Android jest zgodny w przód, to jest droga.

9

Według Romain Guy w wideo this, te słowa oznaczają to samo zachowanie. Ale wielu programistów źle zrozumiało, co znaczy fill_parent, więc wymyślili alias.

3

Dodawanie do istniejących odpowiedzi. Oto część kodu źródłowego z klasy LayoutParams, zarówno stałe FILL_PARENT, jak i MATCH_PARENT mapują na tę samą wartość. Mamy więc absolutnie tę samą funkcjonalność.

public static class LayoutParams { 
    /** 
    * Special value for the height or width requested by a View. 
    * FILL_PARENT means that the view wants to be as big as its parent, 
    * minus the parent's padding, if any. This value is deprecated 
    * starting in API Level 8 and replaced by {@link #MATCH_PARENT}. 
    */ 
    @SuppressWarnings({"UnusedDeclaration"}) 
    @Deprecated 
    public static final int FILL_PARENT = -1; 

    /** 
    * Special value for the height or width requested by a View. 
    * MATCH_PARENT means that the view wants to be as big as its parent, 
    * minus the parent's padding, if any. Introduced in API Level 8. 
    */ 
    public static final int MATCH_PARENT = -1; 
    ... 
Powiązane problemy