ImageView / ImageButton (Bài trước)
(Bài tiếp) LinearLayout

FrameLayout trong Android

FrameLayout là loại View cơ sở, nó là loại Layout đơn giản nhất. Mặc dù nó có thể chứa nhiều View con bên trong, nhưng mục đích chính thiết kế ra nó để chứa một View, từ đó nó trở thành cơ sở để tạo ra các View khác phức tạp hơn. Khi thiết kế Layout chứa nhiều View thì không nên sử dụng layout này, vì nó quá đơn giản việc bố cục các View con trong nó rất khó khăn (nó không có các tính năng điều khiển vị trí View con sao cho việc độc lập về màn hình được đảm bảo).

Nếu bạn vẫn sử dụng FrameLayout để thiết kế layout, thì cần lưu ý: Các View con đặt vào FrameLayout nằm chồng nên nhau theo thứ tự cái nào đưa vào sau thì hiện thị ở lớp trước, mỗi View con chỉ có thể điều chỉnh vị trí nó thông qua thuộc tính android:layout_gravity gán cho View con

Và có thể tinh chỉnh khoảng cách theo hướng cách cánh bằng các thuộc tính liên quan đến margin như: android:layout_margin, android:layout_marginTop, android:layout_marginBottom, android:layout_marginLeft, android:layout_marginRight, android:layout_marginStart, android:layout_marginEnd, android:layout_marginHorizontal, android:layout_marginVertical

Thuộc tính android:layout_gravity trong các View con

Khi các View nằm trong FrameLayout thì khi gán thuộc tính android:layout_gravity gán các giá trị ở bảng sau vị trí của nó thay đổi tương ứng:

Các giá trị có thể kết hợp bằng ký hiệu |

giá trị Vị trí của View con
bottom Nằm dưới FrameLayout
center Nằm giữa FrameLayout
center_horizontal Giữa theo chiều ngang
center_vertical Giữa theo chiều đứng
end Cuối FrameLayout
left Bên trái
right Bên phải
start Bắt đầu FrameLayout
top Trên FrameLayout

Ví dụ:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:padding="10dp"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <!--Ảnh kín FrameLayout-->
    <ImageView
        android:src="@drawable/butterfly"
        android:scaleType="centerCrop"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <!--Button ở giữa, bên phải và cách mép phải FrameLayout 20dp-->
    <Button
        android:layout_gravity="center|right"
        android:layout_marginRight="20dp"
        android:text="Button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <!--Ảnh ở giữa, bên dưới FrameLayout-->
    <ImageView
        android:layout_gravity="center|bottom"
        android:src="@drawable/xuanthulab"
        android:adjustViewBounds="true"
        android:layout_width="150dp"
        android:layout_height="wrap_content" />

    <!--Dòng chữ ở giữa, phần trên FrameLayout-->
    <TextView
        android:layout_gravity="center|top"
        android:layout_marginTop="10dp"
        android:text="Đây là một TextView"
        android:layout_width="100dp"
        android:gravity="center"
        android:layout_height="wrap_content" />

</FrameLayout>

Bạn thấy với FrameLayout các View con nằm chồng nên nhau (Button nằm trên Ảnh ...) theo từng lớp và vị trí của chúng xác định bởi layout_grayvity


Đăng ký nhận bài viết mới
ImageView / ImageButton (Bài trước)
(Bài tiếp) LinearLayout