ความแตกต่างระหว่างการแพ็ดดิงของมุมมองและระยะขอบ


566

อะไรคือความแตกต่างระหว่างมาร์จิ้นดูและแพ็ดดิ้ง


10
ช่องว่างภายในอยู่ภายในขอบส่วนต่างอยู่นอก ดูรุ่นW3C Boxสำหรับรายละเอียด โพสต์บล็อกนี้สามารถอ่านได้มากขึ้น แต่ :-)
Aaron Digulla

2
นี่อาจเป็นประโยชน์การประกาศ
เลย์เอาต์

3
นี่คือ HTML แบบเดียวกันดูที่นี่สำหรับstackoverflow.com/questions/2189452/
สกอตต์

ดูคำตอบของฉันสำหรับคำถามที่คล้ายกันstackoverflow.com/questions/21959050/…
Eugene Brusov

คำตอบ:


568

จะช่วยให้ฉันจำความหมายของpaddingผมคิดว่าเสื้อขนาดใหญ่ที่มีจำนวนมากpadding ฝ้ายหนา ฉันอยู่ในเสื้อโค้ทของฉัน แต่ฉันและเสื้อโค้ทบุนวมของฉันอยู่ด้วยกัน เราเป็นหน่วย

แต่เพื่อระลึกถึงระยะขอบฉันคิดว่า " เฮ้ให้ขอบฉันหน่อยสิ! " มันเป็นพื้นที่ว่างระหว่างฉันกับคุณ อย่าเข้ามาในเขตความสะดวกสบายของฉัน - ขอบของฉัน

เพื่อให้ชัดเจนยิ่งขึ้นนี่คือรูปภาพของการขยายและระยะขอบใน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

paddingเป็นพื้นที่ภายในชายแดนระหว่างชายแดนและดูเนื้อหาของจริง โปรดทราบว่าการขยายเต็มไปรอบเนื้อหา: มีช่องว่างภายในด้านบน, ด้านล่าง, ด้านขวาและด้านซ้าย (ซึ่งอาจเป็นอิสระ)

ระยะขอบคือช่องว่างนอกเส้นขอบระหว่างเส้นขอบและองค์ประกอบอื่น ๆ ถัดจากมุมมองนี้ ในภาพระยะขอบคือพื้นที่สีเทาด้านนอกวัตถุทั้งหมด โปรดทราบว่าเช่นเดียวกับการเว้นระยะขอบจะไปรอบ ๆ เนื้อหาทั้งหมด: มีระยะขอบที่ด้านบน, ด้านล่าง, ด้านขวาและด้านซ้าย

รูปภาพบอกว่ามีมากกว่า 1,000 คำ (แยกจากMargin Vs Padding - คุณสมบัติ CSS ):

ข้อความแสดงแทน


54
คำตอบสำหรับ HTML / CSS คำถามเกี่ยวกับ Android โมเดลมุมมองของ Android ได้รับแรงบันดาลใจจาก HTML แต่ไม่เหมือนกัน สำหรับสิ่งหนึ่งที่ชายแดนไม่ได้เป็นวัตถุขนาดใหญ่ชั้นหนึ่งที่นั่น
Seva Alekseyev

48
หมายเหตุ: ใน Android คุณสมบัติ layout_width จะรวมเนื้อหาและการเติมเต็ม (ใน HTML คุณสมบัติ css width หมายถึงความกว้างของเนื้อหาเท่านั้น) ดังที่ Seva กล่าวว่า Android ไม่มีแนวความคิดในตัวของเส้นขอบ คุณสามารถใช้พื้นหลัง png 9-patch หรือ xml vector drawable เพื่อเพิ่มเส้นขอบใน Android
SharkAlley

12
นอกจากนี้ยังควรสังเกตว่าพื้นหลังได้รับการปรับเปลี่ยนตามขอบ แต่ไม่ใช่การขยาย (ใน Android)
ArtOfWarfare

ใน Android สิ่งที่เรียกว่า "ชายแดน" ที่นี่คือ 'มุมมองคอนเทนเนอร์' สิ่งนี้ควรชี้แจงสิ่งที่ฉันหวัง
The Hungry Androider

75

การแพ็ดดิ้งอยู่ภายในมุมมอง

มาร์จิ้นอยู่นอกมุมมอง

ความแตกต่างนี้อาจเกี่ยวข้องกับคุณสมบัติพื้นหลังหรือขนาด


41

การแพ็ดดิ้งอยู่ในมุมมองส่วนต่างอยู่นอก การเติมเต็มใช้ได้กับทุกมุมมอง ขึ้นอยู่กับมุมมองอาจมีหรือไม่อาจเห็นความแตกต่างระหว่าง padding และระยะขอบ

สำหรับปุ่มตัวอย่างเช่นภาพพื้นหลังของปุ่มลักษณะรวมถึงการขยาย แต่ไม่ใช่ระยะขอบ กล่าวอีกนัยหนึ่งการเพิ่มช่องว่างภายในเพิ่มเติมทำให้ปุ่มดูใหญ่ขึ้นในขณะที่การเพิ่มระยะขอบมากขึ้นจะทำให้ช่องว่างระหว่างปุ่มและตัวควบคุมถัดไปกว้างขึ้น

สำหรับTextViews ในทางกลับกันเอฟเฟ็กต์ภาพของการขยายและขอบจะเหมือนกัน

การกำหนดระยะขอบว่ามีหรือไม่นั้นถูกกำหนดโดยคอนเทนเนอร์ของมุมมองไม่ใช่โดยมุมมองเอง ในLinearLayoutอัตรากำไรขั้นต้นได้รับการสนับสนุนในAbsoluteLayout(ถือว่าล้าสมัยตอนนี้) - ไม่มี



8

การขยายหมายถึงช่องว่างระหว่างวิดเจ็ตและเฟรมดั้งเดิมของวิดเจ็ต แต่ระยะขอบคือช่องว่างระหว่างเฟรมดั้งเดิมของวิดเจ็ตกับขอบเขตของวิดเจ็ตอื่น ป้อนคำอธิบายรูปภาพที่นี่.


7

การเว้นช่องว่างเป็นช่องว่างภายในเส้นขอบระหว่างเส้นขอบและรูปภาพหรือเนื้อหาเซลล์จริง ระยะขอบคือช่องว่างนอกเส้นขอบระหว่างเส้นขอบและองค์ประกอบอื่น ๆ ถัดจากวัตถุนี้


7

บางครั้งคุณสามารถบรรลุผลเดียวกันโดยเล่นเฉพาะกับการขยายหรือขอบ ตัวอย่าง:

Say View X มี view Y (aka: View Y อยู่ใน View X)

-View Y ที่มี Margin = 30 หรือ View X พร้อม Padding = 30 จะได้ผลลัพธ์เหมือนกัน: View Y จะมี offset เท่ากับ 30


7

padding
padding ด้านในเป็นตัวอย่างที่ View.For ถ้าคุณให้android:paddingLeft=20dpแล้วรายการที่อยู่ภายในมุมมองจะจัดให้มี20dpความกว้างจาก left.You ยังสามารถใช้paddingRight, paddingBottom, paddingTopที่จะให้ขยายจากขวาด้านล่างและด้านบนตามลำดับ

Margin
Margin Viewอยู่นอกของ ตัวอย่างเช่นถ้าคุณให้android:marginLeft=20dpแล้วมุมมองจะถูกจัดเรียงหลังจาก20dpจากซ้าย


3

สมมติว่าคุณมีปุ่มในมุมมองและขนาดของมุมมองคือ 200 โดย 200 และขนาดของปุ่มคือ 50 คูณ 50 และชื่อปุ่มคือ HT ตอนนี้ความแตกต่างระหว่างระยะขอบและช่องว่างภายในคือคุณสามารถตั้งค่าระยะขอบของปุ่มในมุมมองเช่น 20 จากด้านซ้าย, 20 จากด้านบนและด้านนอกจะปรับตำแหน่งข้อความในปุ่มหรือมุมมองข้อความเป็นต้นเช่น ค่า padding คือ 20 จากด้านซ้ายดังนั้นมันจะปรับตำแหน่งของข้อความ


2

มาร์จิ้นหมายถึงพื้นที่พิเศษด้านนอกขององค์ประกอบ Padding หมายถึงพื้นที่พิเศษภายในองค์ประกอบ ระยะขอบเป็นพื้นที่พิเศษรอบตัวควบคุม ช่องว่างภายในเป็นพื้นที่พิเศษภายในตัวควบคุม

เป็นการยากที่จะเห็นความแตกต่างกับระยะขอบและช่องว่างภายในด้วยการเติมสีขาว แต่ด้วยการเติมสีคุณสามารถดูได้ดี


2

นอกจากนี้ทุกคำตอบที่ถูกต้องด้านบนซึ่งเป็นหนึ่งในความแตกต่างอื่น ๆ ที่ขยายเพิ่มขึ้นของพื้นที่ที่สามารถคลิกของมุมมองในขณะที่อัตรากำไรขั้นต้นไม่ได้ สิ่งนี้มีประโยชน์หากคุณมีภาพเล็ก ๆ ที่คลิกได้ แต่ต้องการให้ตัวจัดการการคลิกให้อภัย

ตัวอย่างเช่นดูรูปภาพของเลย์เอาต์ของฉันด้วยImageView(ไอคอน Android) ที่ฉันตั้งค่าpaddingBottonเป็น100dp(ภาพคือ mipmap ตัวเรียกใช้งานหุ้นic_launcher) ด้วยตัวจัดการการคลิกที่แนบมาฉันสามารถคลิกทางด้านนอกและด้านล่างของภาพและยังคงลงทะเบียนคลิก

ป้อนคำอธิบายรูปภาพที่นี่


เคล็ดลับการปฏิบัติและมีประโยชน์!
navylover

2

ในคำง่าย ๆ :

  1. Padding - สร้างพื้นที่ภายในขอบของมุมมอง
  2. Margin - สร้างพื้นที่ด้านนอกขอบของมุมมอง

1

คำง่ายๆ: การ
เติมเต็มเปลี่ยนขนาดของกล่อง (ด้วยบางอย่าง)
ระยะขอบเปลี่ยนช่องว่างระหว่างกล่องที่แตกต่างกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.