Jaka jest różnica między marginesem widoku a wypełnieniem?
Jaka jest różnica między marginesem widoku a wypełnieniem?
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
:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android: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" />
<TextView
android: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" />
<TextView
android: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" />
<TextView
android: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" />
<TextView
android: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" />
<TextView
android: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" />
<TextView
android: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" />
<TextView
android: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.
Obraz mówi więcej niż 1000 słów (wyodrębnionych z Margin Vs Padding - CSS Properties ):
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, w AbsoluteLayout
(obecnie uważany za przestarzały) - nie.
Poniższy obraz pozwoli ci zrozumieć wypełnienie i margines
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.
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 20dp
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 dasz android:marginLeft=20dp
, widok zostanie ułożony później 20dp
od 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ć paddingBotton
się 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.
W prostych słowach:
Krótko mówiąc:
wypełnienie zmienia rozmiar pudełka (z czymś).
margines zmienia odstęp między różnymi polami