Sự khác biệt giữa Margin và Padding của View là gì?
Sự khác biệt giữa Margin và Padding của View là gì?
Câu trả lời:
Để giúp tôi nhớ ý nghĩa của đệm , tôi nghĩ về một chiếc áo khoác lớn với nhiều miếng bông dày . Tôi ở trong áo khoác của tôi, nhưng tôi và áo khoác đệm của tôi là cùng nhau. Chúng tôi là một đơn vị.
Nhưng để nhớ lề , tôi nghĩ, " Này, cho tôi một ít lề! " Đó là khoảng trống giữa tôi và bạn. Đừng đến trong vùng thoải mái của tôi - lề của tôi.
Để làm cho nó rõ ràng hơn, đây là một hình ảnh của phần đệm và lề trong 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>
Đệm là không gian bên trong đường viền, giữa đường viền và nội dung của chế độ xem thực tế. Lưu ý rằng phần đệm đi hoàn toàn xung quanh nội dung: có phần đệm ở phía trên, dưới, bên phải và bên trái (có thể độc lập).
Lề là khoảng trắng bên ngoài đường viền, giữa đường viền và các yếu tố khác bên cạnh khung nhìn này. Trong ảnh, lề là vùng màu xám bên ngoài toàn bộ đối tượng. Lưu ý rằng, giống như phần đệm, lề đi hoàn toàn xung quanh nội dung: có các lề ở phía trên, dưới, bên phải và bên trái.
Một hình ảnh cho biết hơn 1000 từ (được trích xuất từ Margin Vs Padding - Thuộc tính CSS ):
Đệm là trong tầm nhìn, lề là bên ngoài. Đệm có sẵn cho tất cả các quan điểm. Tùy thuộc vào chế độ xem, có thể có hoặc không có sự khác biệt trực quan giữa phần đệm và lề.
Ví dụ, đối với các nút, hình nền của nút đặc trưng bao gồm phần đệm, nhưng không phải phần lề. Nói cách khác, việc thêm nhiều phần đệm làm cho nút trông lớn hơn, trong khi thêm phần lề chỉ làm cho khoảng cách giữa nút và điều khiển tiếp theo rộng hơn.
TextView
Mặt khác, đối với s, hiệu ứng hình ảnh của phần đệm và lề là giống hệt nhau.
Có hay không có lề có được xác định bởi vùng chứa của khung nhìn, không phải bởi chính khung nhìn. Trong LinearLayout
lề được hỗ trợ, trong AbsoluteLayout
(được coi là lỗi thời bây giờ) - không.
Hình ảnh dưới đây sẽ cho phép bạn hiểu phần đệm và lề-
Đệm
Padding là bên trong một ví dụ View.For nếu bạn cho android:paddingLeft=20dp
, sau đó các mục bên trong xem sẽ sắp xếp với 20dp
chiều rộng từ left.You cũng có thể sử dụng paddingRight
, paddingBottom
, paddingTop
mà là để cung cấp cho đệm từ bên phải, phía dưới và phía trên tương ứng.
Ký quỹ Ký
quỹ nằm ngoài a View
. Ví dụ: nếu bạn đưa ra android:marginLeft=20dp
, thì chế độ xem sẽ được sắp xếp sau 20dp
từ trái.
Giả sử bạn có một nút trong chế độ xem và kích thước của chế độ xem là 200 x 200 và kích thước của nút là 50 x 50 và tiêu đề nút là HT. Bây giờ, sự khác biệt giữa lề và phần đệm là, bạn có thể đặt lề của nút trong chế độ xem, ví dụ 20 từ bên trái, 20 từ trên cùng và phần đệm sẽ điều chỉnh vị trí văn bản trong nút hoặc chế độ xem văn bản, v.v. , giá trị đệm là 20 từ bên trái, vì vậy nó sẽ điều chỉnh vị trí của văn bản.
Margin đề cập đến không gian thêm bên ngoài của một yếu tố. Đệm liên quan đến không gian thêm trong một yếu tố. Lề là không gian thêm xung quanh điều khiển. Phần đệm là không gian thêm bên trong điều khiển.
Thật khó để thấy sự khác biệt với lề và phần đệm với phần tô màu trắng, nhưng với phần tô màu bạn có thể thấy nó ổn.
Ngoài tất cả các câu trả lời đúng ở trên, một điểm khác biệt nữa là phần đệm làm tăng diện tích có thể nhấp của chế độ xem, trong khi lề thì không . Điều này rất hữu ích nếu bạn có một hình ảnh nhỏ có thể nhấp nhưng muốn làm cho trình xử lý nhấp tha thứ.
Đối với ví dụ, xem hình ảnh này của bố trí của tôi với một ImageView
(biểu tượng Android), nơi tôi đặt paddingBotton
được 100dp
(hình ảnh là các cổ phiếu launcher mipmap ic_launcher
). Với trình xử lý nhấp chuột đính kèm, tôi có thể nhấp vào bên ngoài và bên dưới hình ảnh và vẫn đăng ký một nhấp chuột.
Nói một cách đơn giản:
Nói một cách đơn giản: phần
đệm thay đổi kích thước của hộp (với một cái gì đó).
lề thay đổi không gian giữa các hộp khác nhau