Wypełnienie znajduje się wewnątrz granicy, margines jest na zewnątrz. Szczegółowe informacje można znaleźć w modelu W3C Box . Ten post na blogu jest jednak znacznie bardziej czytelny :-)
Aby pomóc mi zapamiętać znaczenie wyściółki , myślę o dużym płaszczu z dużą ilością grubej bawełnianej wyściółki . Jestem w płaszczu, ale ja i mój wyściełany płaszcz jesteśmy razem. Jesteśmy jednostką.
Ale żeby zapamiętać margines , myślę: „ Hej, daj mi margines! ” To pusta przestrzeń między mną a tobą. Nie wchodź do mojej strefy komfortu - mój margines.
Aby to wyjaśnić, oto zdjęcie wypełnienia i marginesu w TextView:
Układ XML dla powyższego obrazu
<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="10dp"android:background="#c5e1b0"android:textColor="#000000"android:text="TextView margin only"android:textSize="20sp"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="10dp"android:background="#f6c0c0"android:textColor="#000000"android:text="TextView margin only"android:textSize="20sp"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:background="#c5e1b0"android:padding="10dp"android:textColor="#000000"android:text="TextView padding only"android:textSize="20sp"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:background="#f6c0c0"android:padding="10dp"android:textColor="#000000"android:text="TextView padding only"android:textSize="20sp"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="10dp"android:background="#c5e1b0"android:textColor="#000000"android:padding="10dp"android:text="TextView padding and margin"android:textSize="20sp"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="10dp"android:background="#f6c0c0"android:textColor="#000000"android:padding="10dp"android:text="TextView padding and margin"android:textSize="20sp"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:background="#c5e1b0"android:textColor="#000000"android:text="TextView no padding no margin"android:textSize="20sp"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:background="#f6c0c0"android:textColor="#000000"android:text="TextView no padding no margin"android:textSize="20sp"/></LinearLayout>
Wypełnienie to przestrzeń wewnątrz ramki, między ramką a rzeczywistą zawartością widoku. Pamiętaj, że wypełnienie całkowicie obejmuje całą zawartość: wypełnienie znajduje się na górze, dole, prawej i lewej stronie (które mogą być niezależne).
Marginesy to spacje poza granicą, między granicą a innymi elementami obok tego widoku. Na obrazie margines jest szarym obszarem poza całym obiektem. Pamiętaj, że podobnie jak wypełnienie, margines jest całkowicie wokół zawartości: marginesy znajdują się na górze, dole, prawej i lewej stronie.
Odpowiedź dotyczy HTML / CSS, pytanie dotyczyło Androida. Model widoku Androida jest inspirowany HTMLem, ale nie identyczny. Po pierwsze, granica nie jest tam znacznym obiektem pierwszej klasy.
Seva Alekseyev
48
UWAGA: W systemie Android właściwość layout_width obejmuje zawartość i dopełnienie. (W HTML właściwość css width odnosi się tylko do szerokości treści.) Jak powiedział Seva, Android nie ma wbudowanej koncepcji granic. Do dodania obramowania w Androidzie możesz użyć tła z 9 łatkami PNG lub wektorowego formatu XML.
SharkAlley
12
Warto również zauważyć, że tło jest modyfikowane w oparciu o margines, ale nie wypełnienie (w Androidzie).
ArtOfWarfare
W Androidzie tak zwane „obramowanie” to tak naprawdę „widok pojemnika”. Powinno to wyjaśnić trochę, co mam nadzieję.
The Hungry Androider
75
Wypełnienie znajduje się w widoku.
Margines jest poza widokiem.
Ta różnica może mieć znaczenie dla właściwości tła lub rozmiaru.
Wypełnienie jest w widoku, margines jest na zewnątrz. Wypełnienie jest dostępne dla wszystkich widoków. W zależności od widoku może istnieć wizualna różnica między dopełnieniem a marginesem.
Na przykład w przypadku przycisków charakterystyczny obraz tła przycisku zawiera dopełnienie, ale nie margines. Innymi słowy, dodanie większej ilości dopełnienia powoduje, że przycisk wygląda wizualnie na większy, a dodanie większego marginesu po prostu powiększa odstęp między przyciskiem a następnym kontrolem.
Natomiast w przypadku TextViews efekt wizualny wypełnienia i marginesu jest identyczny.
To, czy margines jest dostępny, zależy od kontenera widoku, a nie od samego widoku. W LinearLayoutmarginesie jest obsługiwany, w AbsoluteLayout(obecnie uważany za przestarzały) - nie.
Wypełnienie oznacza odstęp między widgetem a oryginalną ramką widgetu. Ale margines to odstęp między oryginalną ramką widgetu a granicami ramki innej widgetu. .
Wypełnienie to przestrzeń wewnątrz granicy między ramką a rzeczywistą zawartością obrazu lub komórki. Marginesy to spacje poza granicą, między granicą a innymi elementami obok tego obiektu.
Wyściółka
wyściółka jest wewnątrz przykład View.For jeśli dasz android:paddingLeft=20dp, to elementy wewnątrz widoku zorganizuje z 20dpszerokości od left.You mogą również korzystać paddingRight, paddingBottom, paddingTopktóre mają dać wyściółkę z prawej, na dole i górze odpowiednio.
Margines
Margines jest poza View. Na przykład, jeśli dasz android:marginLeft=20dp, widok zostanie ułożony później 20dpod lewej.
Załóżmy, że masz przycisk w widoku, a rozmiar widoku to 200 na 200, a rozmiar przycisku to 50 na 50, a tytuł przycisku to HT. Teraz różnica między marginesem a dopełnieniem polega na tym, że można ustawić margines przycisku w widoku, na przykład 20 od lewej, 20 od góry, a dopełnienie dostosuje pozycję tekstu w widoku przycisku lub widoku itp. , wartość dopełniania wynosi 20 od lewej, więc dopasuje pozycję tekstu.
Margines odnosi się do dodatkowej przestrzeni poza elementem. Wypełnienie odnosi się do dodatkowej przestrzeni w elemencie. Margines to dodatkowa przestrzeń wokół kontrolki. Wypełnienie to dodatkowa przestrzeń wewnątrz kontrolki.
Trudno dostrzec różnicę z marginesem i wypełnieniem białym wypełnieniem, ale dzięki kolorowemu wypełnieniu widać to dobrze.
Oprócz wszystkich poprawnych odpowiedzi powyżej, jeszcze jedną różnicą jest to, że wypełnienie zwiększa klikalny obszar widoku, podczas gdy marginesy nie . Jest to przydatne, jeśli masz mały klikalny obraz, ale chcesz, aby moduł obsługi kliknięć wybaczył.
Na przykład, zobacz ten obraz mojego układu z ImageView(ikona Android) gdzie ustawić paddingBottonsię 100dp(obraz jest zapas wyrzutnia mipmapa ic_launcher). Dzięki dołączonemu modułowi obsługi kliknięć udało mi się kliknąć na zewnątrz i pod obrazem, a mimo to zarejestrować kliknięcie.
Odpowiedzi:
Aby pomóc mi zapamiętać znaczenie wyściółki , myślę o dużym płaszczu z dużą ilością grubej bawełnianej wyściółki . Jestem w płaszczu, ale ja i mój wyściełany płaszcz jesteśmy razem. Jesteśmy jednostką.
Ale żeby zapamiętać margines , myślę: „ Hej, daj mi margines! ” To pusta przestrzeń między mną a tobą. Nie wchodź do mojej strefy komfortu - mój margines.
Aby to wyjaśnić, oto zdjęcie wypełnienia i marginesu w
TextView
:Układ XML dla powyższego obrazu
Związane z
źródło
Wypełnienie to przestrzeń wewnątrz ramki, między ramką a rzeczywistą zawartością widoku. Pamiętaj, że wypełnienie całkowicie obejmuje całą zawartość: wypełnienie znajduje się na górze, dole, prawej i lewej stronie (które mogą być niezależne).
Marginesy to spacje poza granicą, między granicą a innymi elementami obok tego widoku. Na obrazie margines jest szarym obszarem poza całym obiektem. Pamiętaj, że podobnie jak wypełnienie, margines jest całkowicie wokół zawartości: marginesy znajdują się na górze, dole, prawej i lewej stronie.
Obraz mówi więcej niż 1000 słów (wyodrębnionych z Margin Vs Padding - CSS Properties ):
źródło
Wypełnienie znajduje się w widoku.
Margines jest poza widokiem.
Ta różnica może mieć znaczenie dla właściwości tła lub rozmiaru.
źródło
Wypełnienie jest w widoku, margines jest na zewnątrz. Wypełnienie jest dostępne dla wszystkich widoków. W zależności od widoku może istnieć wizualna różnica między dopełnieniem a marginesem.
Na przykład w przypadku przycisków charakterystyczny obraz tła przycisku zawiera dopełnienie, ale nie margines. Innymi słowy, dodanie większej ilości dopełnienia powoduje, że przycisk wygląda wizualnie na większy, a dodanie większego marginesu po prostu powiększa odstęp między przyciskiem a następnym kontrolem.
Natomiast w przypadku
TextView
s efekt wizualny wypełnienia i marginesu jest identyczny.To, czy margines jest dostępny, zależy od kontenera widoku, a nie od samego widoku. W
LinearLayout
marginesie jest obsługiwany, wAbsoluteLayout
(obecnie uważany za przestarzały) - nie.źródło
Poniższy obraz pozwoli ci zrozumieć wypełnienie i margines
źródło
Wypełnienie oznacza odstęp między widgetem a oryginalną ramką widgetu. Ale margines to odstęp między oryginalną ramką widgetu a granicami ramki innej widgetu. .
źródło
Wypełnienie to przestrzeń wewnątrz granicy między ramką a rzeczywistą zawartością obrazu lub komórki. Marginesy to spacje poza granicą, między granicą a innymi elementami obok tego obiektu.
źródło
Czasami możesz osiągnąć ten sam wynik, grając tylko z marginesem wypełnienia LUB. Przykład:
Powiedz, że widok X zawiera widok Y (alias: widok Y znajduje się w widoku X).
-Widok Y z marginesem = 30 LUB Widok X z dopełnieniem = 30 osiągnie ten sam wynik: Widok Y będzie miał przesunięcie 30.
źródło
Wyściółka
wyściółka jest wewnątrz przykład View.For jeśli dasz
android:paddingLeft=20dp
, to elementy wewnątrz widoku zorganizuje z20dp
szerokości od left.You mogą również korzystaćpaddingRight
,paddingBottom
,paddingTop
które mają dać wyściółkę z prawej, na dole i górze odpowiednio.Margines
Margines jest poza
View
. Na przykład, jeśli daszandroid:marginLeft=20dp
, widok zostanie ułożony później20dp
od lewej.źródło
Załóżmy, że masz przycisk w widoku, a rozmiar widoku to 200 na 200, a rozmiar przycisku to 50 na 50, a tytuł przycisku to HT. Teraz różnica między marginesem a dopełnieniem polega na tym, że można ustawić margines przycisku w widoku, na przykład 20 od lewej, 20 od góry, a dopełnienie dostosuje pozycję tekstu w widoku przycisku lub widoku itp. , wartość dopełniania wynosi 20 od lewej, więc dopasuje pozycję tekstu.
źródło
Margines odnosi się do dodatkowej przestrzeni poza elementem. Wypełnienie odnosi się do dodatkowej przestrzeni w elemencie. Margines to dodatkowa przestrzeń wokół kontrolki. Wypełnienie to dodatkowa przestrzeń wewnątrz kontrolki.
Trudno dostrzec różnicę z marginesem i wypełnieniem białym wypełnieniem, ale dzięki kolorowemu wypełnieniu widać to dobrze.
źródło
Oprócz wszystkich poprawnych odpowiedzi powyżej, jeszcze jedną różnicą jest to, że wypełnienie zwiększa klikalny obszar widoku, podczas gdy marginesy nie . Jest to przydatne, jeśli masz mały klikalny obraz, ale chcesz, aby moduł obsługi kliknięć wybaczył.
Na przykład, zobacz ten obraz mojego układu z
ImageView
(ikona Android) gdzie ustawićpaddingBotton
się100dp
(obraz jest zapas wyrzutnia mipmapaic_launcher
). Dzięki dołączonemu modułowi obsługi kliknięć udało mi się kliknąć na zewnątrz i pod obrazem, a mimo to zarejestrować kliknięcie.źródło
W prostych słowach:
źródło
Krótko mówiąc:
wypełnienie zmienia rozmiar pudełka (z czymś).
margines zmienia odstęp między różnymi polami
źródło