Was ist der Unterschied zwischen dem Rand einer Ansicht und dem Auffüllen?
Um mich an die Bedeutung von Polstern zu erinnern , denke ich an einen dicken Mantel mit viel dickem Baumwollpolster . Ich bin in meinem Mantel, aber ich und mein gepolsterter Mantel sind zusammen. Wir sind eine Einheit.
Aber um mich an Rand zu erinnern, denke ich an: " Hey, gib mir einen Rand! "Es ist der leere Raum zwischen mir und dir. Kommen Sie nicht in meine Komfortzone - meinen Spielraum.
Um es klarer zu machen, hier ein Bild von Abstand und Rand in einem 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>
Das Auffüllen ist der Raum innerhalb des Rahmens zwischen dem Rahmen und dem Inhalt der tatsächlichen Ansicht. Beachten Sie, dass der Inhalt vollständig aufgefüllt wird: Es gibt Auffüllungen oben, unten, rechts und links (die unabhängig voneinander sein können).
Ränder sind die Räume außerhalb der Grenze zwischen der Grenze und den anderen Elementen neben dieser Ansicht. Im Bild ist der Rand der graue Bereich außerhalb des gesamten Objekts. Beachten Sie, dass der Rand genau wie die Polsterung vollständig um den Inhalt herum verläuft: Oben, unten, rechts und links befinden sich Ränder.
Ein Bild sagt mehr als 1000 Worte (extrahiert aus Rand Vs Auffüllen - CSS-Eigenschaften ):
Das Auffüllen erfolgt innerhalb einer Ansicht.
Die Marge befindet sich außerhalb einer Ansicht.
Dieser Unterschied kann für Hintergrund- oder Größeneigenschaften relevant sein.
Die Polsterung befindet sich innerhalb der Ansicht, der Rand befindet sich außerhalb. Das Auffüllen ist für alle Ansichten möglich. Je nach Ansicht besteht möglicherweise ein visueller Unterschied zwischen Abstand und Rand.
Bei Schaltflächen enthält das charakteristische Schaltflächenhintergrundbild beispielsweise die Polsterung, jedoch nicht den Rand. Mit anderen Worten, durch Hinzufügen von mehr Abstand wird die Schaltfläche optisch größer, während durch Hinzufügen von mehr Abstand nur die Lücke zwischen der Schaltfläche und dem nächsten Steuerelement vergrößert wird.
Für TextView
s ist der visuelle Effekt von Polsterung und Rand identisch.
Ob ein Rand verfügbar ist oder nicht, wird durch den Container der Ansicht bestimmt, nicht durch die Ansicht selbst. In LinearLayout
wird die Marge unterstützt, in AbsoluteLayout
(gilt jetzt als veraltet) - nein.
Mit dem folgenden Bild können Sie die Polsterung und den Rand verstehen.
Manchmal können Sie dasselbe Ergebnis erzielen, indem Sie nur mit dem Abstand OR Rand spielen. Beispiel
Angenommen, Ansicht X enthält Ansicht Y (auch bekannt als: Ansicht Y befindet sich in Ansicht X).
-View Y with Margin = 30 OR View X with Padding = 30 erzielt das gleiche Ergebnis: View Y hat einen Versatz von 30.
Das Auffüllen ist der Raum innerhalb der Grenze zwischen der Grenze und dem tatsächlichen Bild- oder Zelleninhalt. Ränder sind die Räume außerhalb des Rahmens, zwischen dem Rahmen und den anderen Elementen neben diesem Objekt.
Polsterung
Wenn Sie beispielsweise Android:paddingLeft=20dp
eingeben, werden die Elemente in der Ansicht mit der Breite 20dp
von links angeordnet. Sie können auch paddingRight
verwenden. , paddingBottom
, paddingTop
, die von rechts, unten und oben auffüllen sollen.
Margin
Margin liegt außerhalb eines View
. Wenn Sie beispielsweise Android:marginLeft=20dp
eingeben, wird die Ansicht von links nach 20dp
angeordnet.
Angenommen, Sie haben eine Schaltfläche in einer Ansicht und die Größe der Ansicht beträgt 200 x 200, und die Größe der Schaltfläche beträgt 50 x 50, und der Schaltflächentitel lautet HT. Der Unterschied zwischen Rand und Auffüllung besteht nun darin, dass Sie den Rand der Schaltfläche in der Ansicht festlegen können, z. B. 20 von links und 20 von oben. Durch Auffüllen wird die Textposition in der Schaltfläche, der Textansicht usw. angepasst Der Abstandswert ist 20 von links, sodass die Position des Texts angepasst wird.
Rand bezieht sich auf den zusätzlichen Platz außerhalb eines Elements. Auffüllen bezieht sich auf den zusätzlichen Raum innerhalb eines Elements. Der Rand ist der zusätzliche Abstand um das Steuerelement. Die Polsterung bietet zusätzlichen Platz in der Steuerung.
Es ist schwer, den Unterschied zwischen Rand und Polsterung mit einer weißen Füllung zu erkennen, aber mit einer farbigen Füllung sieht man es gut.
In einfachen Worten:
Polsterung ändert die Größe der Box (mit etwas).
Rand ändert den Abstand zwischen verschiedenen Feldern
In einfachen Worten:
Zusätzlich zu allen obigen korrekten Antworten besteht ein weiterer Unterschied darin, dass Auffüllen vergrößert den anklickbaren Bereich einer Ansicht, wohingegen Ränder nicht . Dies ist nützlich, wenn Sie ein kleines klickbares Bild haben, aber den Klick-Handler verzeihen lassen möchten.
Sehen Sie sich zum Beispiel dieses Bild meines Layouts mit einem ImageView
(dem Android -Symbol) an, in dem ich paddingBotton
auf 100dp
gesetzt habe (das Bild ist der Standard-Launcher) mipmap ic_launcher
). Mit dem beigefügten Click-Handler konnte ich weit außerhalb und unterhalb des Bildes klicken und trotzdem einen Klick registrieren.