Sự khác biệt giữa fill_parent và quấn_content là gì?


276

Trong Android, khi bố trí các widget, sự khác biệt giữa fill_parent( match_parenttrong API Cấp 8 trở lên) và wrap_contentgì?

Có tài liệu nào mà bạn có thể chỉ đến? Tôi quan tâm đến việc hiểu nó rất tốt.


33
Hãy lưu ý rằng fill_parentđã được đổi tên match_parenttrong API Cấp 8 trở lên.
gfrigon

Câu trả lời:


266

Có thể áp dụng thuộc tính cho kích thước ngang hoặc dọc của View (điều khiển trực quan). Nó được sử dụng để đặt kích thước Chế độ xem hoặc Bố cục dựa trên nội dung hoặc kích thước của bố cục chính thay vì chỉ định rõ ràng một thứ nguyên.

fill_parent(không dùng nữa và được đổi tên MATCH_PARENTtrong API Cấp 8 trở lên)

Đặt bố cục của tiện ích thành fill_parent sẽ buộc nó mở rộng để chiếm nhiều không gian có sẵn trong thành phần bố cục mà nó được đặt. Nó gần tương đương với việc đặt kiểu điều khiển của Windows Form Control Fill.

Đặt bố cục hoặc điều khiển mức cao nhất thành fill_parent sẽ buộc nó chiếm toàn bộ màn hình.

wrap_content

Đặt kích thước của Chế độ xem thành quấn_content sẽ buộc nó chỉ mở rộng đủ xa để chứa các giá trị (hoặc điều khiển con) mà nó chứa. Đối với các điều khiển - như hộp văn bản (TextView) hoặc hình ảnh (ImageView) - điều này sẽ bao bọc văn bản hoặc hình ảnh được hiển thị. Đối với các thành phần bố cục, nó sẽ thay đổi kích thước bố cục để phù hợp với các điều khiển / bố cục được thêm vào như con của nó.

Nó gần tương đương với việc đặt thuộc tính của Windows Form Control Autosizethành True.

Tài liệu trực tuyến

Có một số chi tiết trong tài liệu mã Android ở đây .


12
Điều gì xảy ra nếu chiều rộng hình ảnh lớn hơn chiều rộng màn hình và tôi đặt chiều rộng hình ảnh là fill_parent. hình ảnh sẽ được nén theo kích thước màn hình?
John Watson

@JohnWatson bạn đã tìm thấy câu trả lời của mình chưa? Tôi cũng tò mò.
Rachael

Thật tốt khi biết các thuộc tính tương đương của Windows Form Control được đề cập.
Rempelos

Bạn đã thấy gì @JohnWatson? Câu chuyện của bạn là gì ? Câu trả lời là gì ?
Hy vọng có ích vào

36

fill_parent(deprecated) =match_parent
Đường viền của khung nhìn con mở rộng để khớp với đường viền của khung nhìn cha.

wrap_content
Đường viền của chế độ xem con kết thúc tốt đẹp xung quanh nội dung của chính nó.

Dưới đây là một số hình ảnh để làm cho mọi thứ rõ ràng hơn. Màu xanh lá cây và màu đỏ là TextViews. Màu trắng là một LinearLayouthiển thị thông qua.

nhập mô tả hình ảnh ở đây

Mỗi View(a TextView, an ImageView, a Button, v.v.) cần đặt widthheightchế độ xem. Trong tệp bố cục xml, có thể trông như thế này:

android:layout_width="wrap_content"
android:layout_height="match_parent"

Bên cạnh việc đặt chiều rộng và chiều cao thành match_parenthoặc wrap_content, bạn cũng có thể đặt chúng thành một số giá trị tuyệt đối:

android:layout_width="100dp"
android:layout_height="200dp"

Tuy nhiên, nói chung điều đó không tốt bằng vì nó không linh hoạt cho các thiết bị có kích thước khác nhau. Sau khi bạn đã hiểu wrap_contentmatch_parent, điều tiếp theo cần học là layout_weight.

Xem thêm

XML cho hình ảnh trên

Tuyến tính dọc

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="width=wrap height=wrap"
        android:background="#c5e1b0"/>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="width=match height=wrap"
        android:background="#f6c0c0"/>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="width=match height=match"
        android:background="#c5e1b0"/>

</LinearLayout>

Tuyến tính ngang

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="horizontal"
              android:layout_width="match_parent"
              android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="WrapWrap"
        android:background="#c5e1b0"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="WrapMatch"
        android:background="#f6c0c0"/>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="MatchMatch"
        android:background="#c5e1b0"/>

</LinearLayout>

Ghi chú

Giải thích trong câu trả lời này giả định rằng không có lề hoặc phần đệm . Nhưng ngay cả khi có, khái niệm cơ bản vẫn giống nhau. Đường viền / khoảng cách khung nhìn chỉ được điều chỉnh bởi giá trị của lề hoặc phần đệm.


9
  • fill_parent sẽ làm cho chiều rộng hoặc chiều cao của phần tử lớn bằng phần tử cha, nói cách khác, vùng chứa.

  • wrap_content sẽ làm cho chiều rộng hoặc chiều cao lớn đến mức cần thiết để chứa các phần tử bên trong nó.

Bấm vào đây để tham khảo ANDROID DOC


cái gì sẽ là container? Làm thế nào để bao quanh các khung nhìn với các container khác nhau?
Tejzeratul

2

fill_parent :

Một thành phần được bố trí bố trí cho fill_parentsẽ bắt buộc phải mở rộng để lấp đầy các thành viên đơn vị bố trí, càng nhiều càng tốt trong không gian. Điều này phù hợp với thuộc tính dockstyle của điều khiển Windows. Bố cục hoặc điều khiển được đặt ở trên cùng fill_parentsẽ buộc nó chiếm toàn bộ màn hình.

wrap_content

Thiết lập chế độ xem kích thước wrap_contentsẽ buộc phải xem được mở rộng để hiển thị tất cả nội dung. Các TextView và ImageView điều khiển, ví dụ, được thiết lập để wrap_contentsẽ hiển thị toàn bộ nội dung và hình ảnh nội bộ của mình. Các yếu tố bố trí sẽ thay đổi kích thước theo nội dung. Thiết lập chế độ xem kích thước của thuộc tính Tự động wrap_contenttương đương để đặt điều khiển Windows cho True.

Để biết chi tiết Vui lòng kiểm tra liên kết này: http://developer.android.com/reference/android/view/Viewgroup.LayoutParams.html

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.