Tài nguyên bố cục
    
    
      
    
    
      
      Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
    
    
      
      Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
    
  
  
      
    
  
  
  
  
  
    
    
    
  
  
    
    
    
Tài nguyên bố cục xác định cấu trúc của giao diện người dùng trong một Activity hoặc một thành phần trên giao diện người dùng.
- vị trí tệp:
- res/layout/filename.xml
 Tên tệp được dùng làm mã nhận dạng tài nguyên.
- loại dữ liệu tài nguyên được biên dịch:
- Con trỏ tài nguyên đến một tài nguyên View(hoặc lớp con)
- mã tham chiếu tài nguyên:
- 
Trong Java: R.layout.filename
 Trong XML:@[package:]layout/filename
- cú pháp:
- 
<?xml version="1.0" encoding="utf-8"?>
<ViewGroup
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@[+][package:]id/resource_name"
    android:layout_height=["dimension" | "match_parent" | "wrap_content"]
    android:layout_width=["dimension" | "match_parent" | "wrap_content"]
    [ViewGroup-specific attributes] >
    <View
        android:id="@[+][package:]id/resource_name"
        android:layout_height=["dimension" | "match_parent" | "wrap_content"]
        android:layout_width=["dimension" | "match_parent" | "wrap_content"]
        [View-specific attributes] >
        <requestFocus/>
    </View>
    <ViewGroup >
        <View />
    </ViewGroup>
    <include layout="@layout/layout_resource"/>
</ViewGroup>Lưu ý: Phần tử gốc có thể là phần tử ViewGroup,Viewhoặc<merge>, nhưng chỉ được có một phần tử gốc và phần tử đó phải chứa thuộc tínhxmlns:androidcó không gian tên làandroidnhư hiển thị trong ví dụ cú pháp trước.
 
- phần tử:
- 
  
  - <ViewGroup>
- Vùng chứa của các phần tử Viewkhác. Có nhiều loại đối tượngViewGroupvà mỗi đối tượng cho phép bạn chỉ định bố cục của các phần tử con theo nhiều cách. Các loại đối tượngViewGroupkhác nhau bao gồmLinearLayout,RelativeLayoutvàFrameLayout.Đừng giả định rằng mọi quá trình dẫn xuất của ViewGroupđều chấp nhận các khung hiển thị lồng nhau. Một số nhóm khung hiển thị là cách triển khai lớpAdapterView, lớp này chỉ xác định các lớp con của chúng từAdapter.
 Thuộc tính: 
        - android:id
- Mã tài nguyên. Là tên tài nguyên riêng biệt cho phần tử mà bạn có thể dùng để lấy thông tin tham chiếu đến ViewGroupqua ứng dụng của mình. Để biết thêm thông tin, hãy xem phần Giá trị của android:id.
- android:layout_height
- Phương diện hoặc từ khoá. Bắt buộc. Chiều cao của nhóm, dưới dạng giá trị phương diện (hoặc tài nguyên phương diện) hoặc từ khoá ("match_parent"hoặc"wrap_content"). Để biết thêm thông tin, hãy xem phần Giá trị của android:layout_height và android:layout_width.
- android:layout_width
- Phương diện hoặc từ khoá. Bắt buộc. Chiều rộng của nhóm, dưới dạng giá trị phương diện (hoặc tài nguyên phương diện) hoặc từ khoá ("match_parent"hoặc"wrap_content"). Để biết thêm thông tin, hãy xem phần Giá trị của android:layout_height và android:layout_width.
 Lớp cơ sở ViewGrouphỗ trợ thêm nhiều thuộc tính và mỗi cách triển khaiViewGroupcũng hỗ trợ thêm nhiều thuộc tính nữa. Để tham chiếu tất cả thuộc tính hiện có, vui lòng xem tài liệu tham khảo tương ứng cho lớpViewGroup(ví dụ: thuộc tính XML củaLinearLayout).
 
- <View>
- Là một thành phần riêng lẻ trên giao diện người dùng, thường được gọi là một tiện ích. Các loại đối tượng Viewkhác nhau bao gồmTextView,ButtonvàCheckBox.Thuộc tính: 
        - android:id
- Mã tài nguyên. Là tên tài nguyên riêng biệt cho phần tử mà bạn có thể dùng để lấy thông tin tham chiếu đến Viewqua ứng dụng của mình. Để biết thêm thông tin, hãy xem phần Giá trị của android:id.
- android:layout_height
- Phương diện hoặc từ khoá. Bắt buộc. Chiều cao của phần tử, dưới dạng giá trị phương diện (hoặc tài nguyên phương diện) hoặc từ khoá ("match_parent"hoặc"wrap_content"). Để biết thêm thông tin, hãy xem phần Giá trị của android:layout_height và android:layout_width.
- android:layout_width
- Phương diện hoặc từ khoá. Bắt buộc. Chiều rộng của phần tử, dưới dạng giá trị kích thước (hoặc tài nguyên kích thước) hoặc từ khoá ("match_parent"hoặc"wrap_content"). Để biết thêm thông tin, hãy xem phần Giá trị của android:layout_height và android:layout_width.
 Lớp cơ sở Viewhỗ trợ thêm nhiều thuộc tính và mỗi cách triển khaiViewcũng hỗ trợ thêm nhiều thuộc tính nữa. Để biết thêm thông tin, hãy đọc bài viết Bố cục. Để tham chiếu tất cả thuộc tính hiện có, vui lòng xem tài liệu tham khảo tương ứng, ví dụ: thuộc tính XMLTextView.
 
- <requestFocus>
- Mọi phần tử biểu thị một đối tượng Viewđều có thể bao gồm phần tử trống này. Đây là phần tử sẽ giúp phần tử mẹ được chú ý đầu tiên trên màn hình. Bạn chỉ có thể có một trong các phần tử này trên mỗi tệp.
- <include>
- Đưa tệp bố cục vào bố cục này.
      Thuộc tính: 
        - layout
- Tài nguyên bố cục. Bắt buộc. Tham chiếu đến tài nguyên bố cục.
- android:id
- Mã tài nguyên. Ghi đè mã nhận dạng được cấp cho chế độ xem gốc trong bố cục đi kèm.
        
- android:layout_height
- Phương diện hoặc từ khoá. Cơ chế ghi đè chiều cao được cấp cho chế độ xem gốc trong bố cục đi kèm. Chỉ có hiệu lực nếu android:layout_widthcũng được khai báo.
- android:layout_width
- Phương diện hoặc từ khoá. Cơ chế ghi đè chiều rộng được cấp cho chế độ xem gốc trong bố cục đi kèm. Chỉ có hiệu lực nếu android:layout_heightcũng được khai báo.
 Bạn có thể đưa mọi thuộc tính bố cục khác vào <include>được phần tử gốc hỗ trợ trong bố cục đi kèm. Ngoài ra, các thuộc tính này sẽ ghi đè các thuộc tính được xác định trong phần tử gốc.
 Thận trọng: Nếu muốn ghi đè thuộc tính bố cục bằng thẻ <include>thì bạn phải ghi đè cảandroid:layout_heightvàandroid:layout_widthđể các thuộc tính bố cục khác có hiệu lực.
 Một cách khác để đưa bố cục vào là sử dụng ViewStub: đây là một khung hiển thị gọn nhẹ không tốn không gian bố cục cho đến khi bạn tăng cường một cách rõ ràng. Khi đó, khung hiển thị này sẽ bao gồm một tệp bố cục được xác định bằng thuộc tínhandroid:layout. Để biết thêm thông tin về cách sử dụngViewStub, vui lòng đọc bài viết Tải khung hiển thị theo yêu cầu.
 
- <merge>
- Là một phần tử gốc thay thế không được vẽ trong hệ phân cấp bố cục. Bạn nên dùng phần tử này làm phần tử gốc trong trường hợp bố cục này sẽ được đặt vào một bố cục đã chứa Viewmẹ thích hợp để chứa các phần tử con của phần tử<merge>.Điều này đặc biệt hữu ích khi bạn có kế hoạch đưa bố cục này vào một tệp bố cục khác bằng cách sử dụng <include>, đồng thời bố cục này không đòi hỏi một vùng chứaViewGroupkhác. Để biết thêm thông tin về bố cục hợp nhất, vui lòng đọc bài viết Sử dụng lại bố cục bằng <include>.
 
 Giá trị của android:idĐối với giá trị mã nhận dạng, bạn thường sử dụng biểu mẫu cú pháp này: "@+id/name", như trong ví dụ sau. Biểu tượng dấu cộng+cho biết đây là một mã tài nguyên mới và công cụaaptsẽ tạo một số nguyên mới cho tài nguyên trong lớpR.java(nếu chưa có).
 <TextView android:id="@+id/nameTextbox"/> Tên nameTextboxhiện là một mã tài nguyên đi kèm với phần tử này. Sau đó, bạn có thể tham chiếuTextViewliên kết với mã nhận dạng trong Java:
 Kotlinval textView: TextView? = findViewById(R.id.nameTextbox) JavaTextView textView = findViewById(R.id.nameTextbox); 
Mã này trả về đối tượng TextView.
 Tuy nhiên, nếu đã xác định tài nguyên giá trị nhận dạng (và giá trị này chưa được sử dụng), thì bạn có thể áp dụng mã đó cho phần tử Viewbằng cách xoá biểu tượng dấu cộng trong giá trịandroid:id.
 Giá trị của android:layout_height và android:layout_widthGiá trị chiều cao và chiều rộng được biểu thị bằng bất kỳ đơn vị phương diện nào do Android hỗ trợ (px, dp, sp, pt, in, mm) hoặc bằng các từ khoá sau: | Giá trị | Mô tả | 
|---|
 
      | match_parent | Thiết lập phương diện khớp với phương diện của phần tử mẹ. Thêm API cấp 8 vào để ngừng sử dụng fill_parent. |  
      | wrap_content | Chỉ thiết lập phương diện theo kích thước cần thiết cho phù hợp với nội dung của phần tử này. |  
 Phần tử khung hiển thị tuỳ chỉnhBạn có thể tạo các phần tử ViewvàViewGrouptuỳ chỉnh, sau đó áp dụng cho bố cục giống như một phần tử bố cục chuẩn. Bạn cũng có thể chỉ định các thuộc tính được hỗ trợ trong phần tử XML. Để biết thêm thông tin, hãy xem bài viết Tạo thành phần khung hiển thị tuỳ chỉnh.
 
- ví dụ:
- Tệp XML được lưu vào res/layout/main_activity.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:id="@+id/text"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="Hello, I am a TextView" />
    <Button android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello, I am a Button" />
</LinearLayout>Mã xử lý ứng dụng này tải bố cục cho một Activitytrong phương thứconCreate():
 
- 
Kotlinpublic override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main_activity)
}Javapublic void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);
}
- xem thêm:
- 
 
    
  
  
    
      
      
    
    
      
    
    
  
       
    
    
      
    
  
  
  Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
  Cập nhật lần gần đây nhất: 2025-07-27 UTC.
  
  
  
    
      [[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2025-07-27 UTC."],[],[]]