1. ホーム
  2. Android

android:paddingとandroid:marginの違いについて。

2022-02-17 12:39:35

転載の際はブログアドレスをご指定ください。http://blog.csdn.net/qq_32059827/article/details/51487997

Web上の類似ブログを読んでも、明確な違いがわからない。では、paddingとandroid:marginの違いについて具体的に分析します。

まず図を見てください。


その名の通り、paddingは内側の余白、marginは外側の余白です。

Androidのビューは長方形の領域で、paddingは内側の余白、つまりビュー(中のコンテンツ)は常に境界線から一定距離以上離れていることを意味します。marginは外側の余白、つまり外のビューはビューの境界に完全に近づくことはできず、少なくとも一定距離離れていなければならないことを意味します。

これは、ViewからViewの中の子の距離に関して、Viewをpaddingに指定するという意味だと解釈しています。marginとして指定されたViewは、View自体の他からの距離、または親Viewからの距離に対してのものです。

別のコードを見てみましょう。

<?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"
    android:padding="10dp" >//The padding here means that the distance between his child view, i.e. the two following LinearLayout, and this LinearLayout is 10dp

    <LinearLayout
        android:id="@+id/left_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="left"
        android:background="@drawable/message_left" >

        <TextView
            android:id="@+id/left_msg"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_margin="10dp"
            android:textColor="#fff" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/right_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:background="@drawable/message_right" >

        <TextView
            android:id="@+id/right_msg"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_margin="10dp" />//This means that the distance between the TextView and the parent view it's in, i.e. the LinearLayout, is 10dp
    </LinearLayout>

</LinearLayout>


テストしてみると、子LinearLayoutの内部にpaddingとmarginを追加すると、確かに書かれている内容と一致します。


ここでも、記載されていることの正しさを確認するために、別の例を挙げています。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" 
    android:padding="30dp">//indicates that the margin between the view inside this view, i.e. the linerlayout, and the view is 30dp

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp" >// means the margin of the linerlayout is 10dp relative to itself and the outside view

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="30dp"//meaning that this button has a margin of 30dp relative to itself and the outer view, i.e., linerlayout and button2 (which can be directly interpreted as the surrounding view)
            android:text="button1" />

        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="30dp"//means that the margin of this button is 30dp relative to itself and the left view, i.e. button1
            android:text="button2" />
    </LinearLayout>

</LinearLayout>


図解すると次のようになります。


もし、他にもっと良い理解をお持ちの方がいらっしゃいましたら、ご指導ください。