ビューのパディングとマージンの違い


566

ビューのマージンとパディングの違いは何ですか?


10
パディングは境界線の内側にあり、マージンは外側にあります。詳細については、W3Cボックスモデルを参照してください。このブログの投稿はもっと読みやすくなっていますが、:-)
Aaron Digulla

2
これは参考になるかもしれませんレイアウトの宣言
Sharique Abdullah '10

3
これはHTMLと同じです。詳細については、ここを参照してください。stackoverflow.com/ questions / 2189452 /…
Scott

同様の質問に私の答えを参照してくださいstackoverflow.com/questions/21959050/...
ユージンBrusov

回答:


568

パディングの意味を思い出しやすくするために、厚い綿のパディングがたくさんある大きなコートを考えます。私はコートの中にいますが、私とパッド入りのコートは一緒です。私たちはユニットです。

しかし、マージンを覚えておくために、「ちょっと、マージンをください!」と思います。これは、私とあなたの間の空のスペースです。私の快適ゾーンの内側に入らないでください-私のマージン。

より明確にするために、ここにパディングとマージンの画像がありますTextView

ここに画像の説明を入力してください

上の画像のxmlレイアウト

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

関連した


578

パディングは、ボーダーと実際のビューのコンテンツとの間のボーダー内のスペースです。パディングはコンテンツを完全に囲んでいることに注意してください。上下左右にパディングがあります(これは独立している場合があります)。

マージンは、ボーダーとこのビューの隣にある他の要素の間の、ボーダーの外側のスペースです。画像では、マージンはオブジェクト全体の外側の灰色の領域です。余白はパディングと同様にコンテンツ全体を囲んでいることに注意してください。上、下、右、および左に余白があります。

画像に1000ワードを超える言葉がある(マージン対パディング-CSSプロパティから抽出):

代替テキスト


54
答えはHTML / CSSで、Androidに関する質問でした。AndroidのビューモデルはHTMLに触発されていますが、同一ではありません。1つには、ボーダーはそこにある一流のサイズ設定可能なオブジェクトではありません。
セヴァアレクセイエフ

48
注:Androidでは、layout_widthプロパティにコンテンツとパディングが含まれています。(HTMLでは、css widthプロパティはコンテンツの幅のみを参照します。)Sevaが言ったように、Androidには境界線の概念が組み込まれていません。Androidで9パッチのpng背景またはxmlベクタードローアブルを使用して境界線を追加できます。
SharkAlley 2012年

12
また、背景はマージンに基づいて変更され、パディングは変更されないことにも注意してください(Androidの場合)
ArtOfWarfare

Androidでは、ここで「ボーダー」と呼ばれるのは、実際には「ビューコンテナー」です。これは私が望むことを少し明確にするはずです。
Hungry Androider、2015年

75

パディングはビューの内部にあります。

マージンはビューの外にあります。

この違いは、背景またはサイズのプロパティに関連している可能性があります。


41

パディングはビュー内にあり、マージンは外側にあります。すべてのビューでパディングを使用できます。ビューによっては、パディングとマージンの間に視覚的な違いがある場合とない場合があります。

たとえば、ボタンの場合、特徴的なボタンの背景画像にはパディングが含まれますが、マージンは含まれません。つまり、パディングを追加するとボタンの見た目が大きくなり、マージンを追加するとボタンと次のコントロールの間のギャップが広くなります。

以下のためTextViewの、他方では、パディングとマージンの視覚効果は同一です。

マージンを使用できるかどうかは、ビュー自体ではなく、ビューのコンテナによって決まります。ではLinearLayout余白に、サポートされてAbsoluteLayoutいない- (現在は廃止と考えられます)。



8

パディングとは、ウィジェットとウィジェットの元のフレームの間のスペースを意味します。ただし、マージンは、ウィジェットの元のフレームと他のウィジェットのフレームの境界との間のスペースです。ここに画像の説明を入力してください


7

パディングは、境界線と実際の画像またはセルの内容の間の境界線の内側のスペースです。マージンは、ボーダーとこのオブジェクトの隣にある他の要素の間の、ボーダーの外側のスペースです。


7

場合によっては、パディングまたはマージンのみを使用して同じ結果を得ることができます。例:

ビューXにビューYが含まれているとします(ビューYはビューXの内側にあります)。

-マージンY = 30のビューYまたはパディング= 30のビューXでも同じ結果が得られます。ビューYのオフセットは30になります。


7

パディング
あなたが与える場合はパディングがView.For例の内部でandroid:paddingLeft=20dp、その後ビュー内の項目がで手配します、20dpまた、使用することができますleft.Youから幅paddingRightpaddingBottompaddingTopそれぞれ、右下と上からのパディングを与えることです。

マージン
マージンはの外にありViewます。たとえばandroid:marginLeft=20dp、を指定すると、ビューは20dp左から後に配置されます。


3

ビューにボタンがあり、ビューのサイズが200 x 200、ボタンのサイズが50 x 50、ボタンのタイトルがHTであるとしましょう。マージンとパディングの違いは、ビューのボタンのマージンを設定できます。たとえば、左から20、上から20のように設定できます。パディングは、ボタンやテキストビューなどのテキストの位置を調整します。 、パディング値は左から20なので、テキストの位置を調整します。


2

マージンとは、要素の外側の余分なスペースを指します。パディングとは、要素内の余分なスペースを指します。マージンは、コントロールの周りの余分なスペースです。パディングは、コントロール内の余分なスペースです。

余白とパディングの違いを白い塗りつぶしで見分けるのは難しいですが、色付きの塗りつぶしを使用すると、細かくそれを見ることができます。


2

上記のすべての正解に加えて、もう1つの違いは、パディングによってビューのクリック可能な領域が増えるのに対し、マージンは増えないことです。これは、小さめのクリック可能な画像があり、クリックハンドラーに寛容にしたい場合に役立ちます。

例えばのために、と私のレイアウトのこの画像を参照してくださいImageView、私は設定(Androidのアイコン)paddingBottonであることを100dp(画像は株式ランチャーミップマップですic_launcher)。添付されたクリックハンドラーを使用して、画像の外側と下の方をクリックして、クリックを登録することができました。

ここに画像の説明を入力してください


実用的で役立つヒント!
navylover

2

簡単な言葉で:

  1. パディング-ビューの境界内にスペースを作成します。
  2. マージン-ビューの境界の外側にスペースを作成します。

1

簡単に言えば、
パディングはボックスのサイズを(何かで)変更します。
マージンは、異なるボックス間のスペースを変更します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.