Wednesday, October 4, 2017

Margin và Padding

Trong khi làm giao diện với xml, ta hãy gặp hai khái niệm Margin và Padding, chúng hơi khác nhau, cần phân biệt.
Giả sử ta có 2 textView cạnh nhau trong layout, bình thường file xml như sau.
<LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="60dp"
        android:layout_gravity="center_horizontal">

        <TextView
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:layout_gravity="center_horizontal"
            android:background="@drawable/line2"
            android:text="Chữ ví dụ"
            android:textColor="#800000"
            android:textSize="16sp" />

        <TextView
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:layout_gravity="center_horizontal"
            android:background="@drawable/line2"
            android:text="Chữ ví dụ"
            android:textColor="#800000"
            android:textSize="16sp" />
    </LinearLayout>
Bây giờ ta thêm marginLeft cho cả hai textView.
android:layout_marginLeft="10dp"
Ta thấy cả 2 textView đã dịch đi cách trái một khoảng 10dp.
Bây giờ thêm paddingLeft cho cả 2 textView.
android:paddingLeft="10dp"
Ta thấy chữ đã dịch vào trong cách lề một khoảng 10dp.
Như vậy sự khác nhau của chúng là Margin sẽ tác động đến toàn bộ view, dịch đi một khoảng cách view bên cạnh. Còn Padding chỉ tác động tới chữ ở trong view, dịch chữ đi cách lề của view một khoảng.
Phân biệt 2 điều này giúp ta lựa chọn giữa chúng để căn chỉnh chữ.
Nếu có textView bị hẹp, muốn một ký tự có thể lấn vào lề phải, ta sẽ dùng padding.
<TextView
            android:layout_width="87dp"
            android:layout_height="50dp"
            android:layout_gravity="center_horizontal"
            android:background="@drawable/line2"
            android:text="Chữ ví dụ dài"
            android:singleLine="true"
            android:ellipsize="none"
            android:paddingRight="-5dp"
            android:layout_marginLeft="10dp"
            android:textColor="#800000"
            android:textSize="16sp" />


No comments:

Post a Comment