Câu trả lời:
Chúng giống nhau (trong API cấp 8+). Sử dụng match_parent
.
FILL_PARENT (được đổi tên thành MATCH_PARENT trong API cấp 8 trở lên), có nghĩa là chế độ xem muốn lớn như cha mẹ của nó (trừ phần đệm)
...
fill_parent
: Chế độ xem phải lớn như cha mẹ của nó (trừ phần đệm). Hằng số này không được dùng nữa bắt đầu từ API Cấp 8 và được thay thế bằngmatch_parent
.
http://developer.android.com/reference/android/view/Viewgroup.LayoutParams.html
-1
. Tôi cảm thấy tốt hơn về điều đó, tôi cũng không nhận được sự thúc đẩy trong đó ... :-)
-1
. Bạn gặp lỗi vì nền tảng cũ hơn không biết về tên mới của hằng số rất giống nhau.
Google đã thay đổi tên để tránh nhầm lẫn.
Vấn đề với tên cũ fill parent
là nó ngụ ý ảnh hưởng đến kích thước của cha mẹ, trong khi match parent
mô tả tốt hơn hành vi kết quả - khớp với kích thước với cha mẹ.
Cả hai hằng số giải quyết -1
cuối cùng, và do đó dẫn đến hành vi giống hệt nhau trong ứng dụng. Trớ trêu thay, sự thay đổi tên này được thực hiện để làm rõ mọi thứ dường như đã thêm sự nhầm lẫn thay vì loại bỏ nó.
Về mặt chức năng không có sự khác biệt, Google chỉ thay đổi tên từ fill_parent thành match_parent, từ API cấp 8 (Android 2.2). FILL_PARENT vẫn có sẵn vì lý do tương thích.
LayoutParams.FILL_PARENT
và LayoutParams.MATCH_PARENT
cả hai đều có giá trị -1. Không chắc chắn điều gì đã cám dỗ google thay đổi từ Fill Parent thành Match Parent :)
Vì hầu hết phones are >= Android 2.2
.. bạn nên sử dụng Match Parent để tương thích trong tương lai ... không chắc chắn khi nào họ sẽ ngừng hằng số Fill Parent cũ hơn!
Để tương thích, tốt hơn hết là bạn nên sử dụng fill_parent, khi hỗ trợ bên dưới các thiết bị API 8. Nhưng nếu ứng dụng của bạn nhắm mục tiêu API 8 trở lên, bạn nên sử dụng match_parent thay thế.
FILL_PARENT
không được dùng nữa (như Matt Ball đã đề cập ở trên), thì tùy chọn duy nhất cho khả năng tương thích về phía trước là MATCH_PARENT
.
FILL_PARENT
không được dùng trong API cấp 8 và MATCH_PARENT
sử dụng API highlevel
Chỉ cần đặt cho nó một cái tên gần với hành động thực tế của nó . "fill_parent"
không lấp đầy khoảng trống còn lại như tên sẽ ngụ ý (đối với việc bạn sử dụng thuộc tính weight). Thay vào đó, nó chiếm nhiều không gian như bố mẹ của nó. Đó là lý do tại sao tên mới là"match_parent"
Cả hai đều có chức năng tương tự chỉ khác nhau là fill_parent được sử dụng tối đa API cấp 8 và match_parent được sử dụng sau cấp độ API 8 trở lên.
Khi bạn đặt bố cục width
và height
như match_parent
trong thuộc XML
tính, nó sẽ chiếm toàn bộ diện tích mà chế độ xem cha có, tức là nó sẽ lớn như bố mẹ.
<LinearLayout
android:layout_width="300dp"
android:layout_height="300dp"
android:background="#f9b0b0">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#b0f9dc"/>
</LinearLayout>
Hare cha mẹ là màu đỏ và con màu xanh lá cây. Con chiếm hết diện tích. Bởi vì nó là width
và height
là match_parent
.
Lưu ý: Nếu cha mẹ được áp dụng một phần đệm thì không gian đó sẽ không được bao gồm.
<LinearLayout
android:layout_width="300dp"
android:layout_height="300dp"
android:background="#f9b0b0"
android:paddingTop="20dp"
android:paddingBottom="10dp">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#b0f9dc"/>
</LinearLayout>
Vậy TextView hight = 300dp (hight cha) - (20 (paddingTop) +10 (paddingBottom)) = (300 - 30) dp = 270 dp
fill_parent
là tên trước đó của match_parent
Đối với API cấp 8 trở lên được fill_parent
đổi tên thành match_parent
và fill_parent
hiện không được chấp nhận.
Vì vậy fill_parent
và match_parent
là như nhau.
Khung nhìn phải lớn như cha mẹ của nó (trừ phần đệm). Hằng số này không được dùng nữa bắt đầu từ API Cấp 8 và được thay thế bằng {@code match_parent}.
match_parent, có nghĩa là chế độ xem muốn lớn như cha mẹ của nó (trừ phần đệm).
quấn_content, có nghĩa là khung nhìn muốn đủ lớn để bao quanh nội dung của nó (cộng với phần đệm)
Để minh họa tốt hơn, tôi đã tạo ra một bố cục mẫu thể hiện khái niệm này. Để thấy hiệu quả của nó, tôi đã thêm một đường viền của từng nội dung textView.
Trong nội dung textView "Match Parent", chúng ta có thể thấy chiều rộng bố cục của nó trải rộng ra toàn bộ chiều dài của nó.
Nhưng chúng ta có thể thấy trong nội dung textView "Wrap Content", chiều rộng bố cục của nó được bao bọc bởi chiều dài của nội dung (Wrap Content).
match_parent
và fill_parent
là cùng một thuộc tính, được sử dụng để xác định chiều rộng hoặc chiều cao của chế độ xem trong toàn màn hình theo chiều ngang hoặc chiều dọc.
Các thuộc tính này được sử dụng trong các tệp xml android như thế này.
android:layout_width="match_parent"
android:layout_height="fill_parent"
hoặc là
android:layout_width="fill_parent"
android:layout_height="match_parent"
fill_parent
đã được sử dụng trong các phiên bản trước, nhưng bây giờ nó đã bị phản đối và được thay thế bởi match_parent
. Tôi hy vọng nó sẽ giúp bạn.
fill_parent: Chế độ xem phải lớn như cha mẹ của nó.
bây giờ nội dung này fill_parent không được dùng nữa và được thay thế bằng match_parent.
FILL_PARENT đã được đổi tên thành MATCH_PARENT trong API cấp 8 trở lên, điều đó có nghĩa là chế độ xem muốn lớn như cha mẹ của nó (trừ phần đệm) - Google
FILL_PARENT
không được chấp nhận từ API cấp 8 trở lên và được đổi tên cho các phiên bản trên là MATCH_PARENT
Cả hai đều giống nhau FILL_PARENT
và MATCH_PARENT
, FILL_PARENT
được sử dụng trong phiên bản thấp hơn API cấp 8 và MATCH_PATENT được sử dụng ở cấp API cao hơn lớn hơn 8.
FILL_PARENT
(được đổi tên MATCH_PARENT
trong API Cấp 8 trở lên), điều đó có nghĩa là chế độ xem muốn lớn như cha mẹ của nó (trừ phần đệm)
fill_parent
: Chế độ xem phải lớn như cha mẹ của nó (trừ phần đệm). Hằng số này không được dùng nữa bắt đầu từ API Cấp 8 và được thay thế bằng match_parent
.
Để biết thêm chi tiết xin vui lòng ghé thăm này trang
1. match_parent
Khi bạn đặt chiều rộng và chiều cao bố cục là match_parent, nó sẽ chiếm toàn bộ diện tích mà chế độ xem cha có, tức là nó sẽ lớn như bố mẹ.
Lưu ý : Nếu cha mẹ được áp dụng một phần đệm thì không gian đó sẽ không được bao gồm.
Khi chúng tôi tạo một layout.xml theo mặc định, chúng tôi có RelativeLayout là cha mẹ mặc định Xem với android: layout_creen = "match_parent" và android: layout_height = "match_parent" tức là nó chiếm toàn bộ chiều rộng và chiều cao của màn hình di động.
Cũng lưu ý rằng phần đệm được áp dụng cho tất cả các mặt,
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
Bây giờ, hãy thêm một chế độ xem tuyến tính phụ tuyến tính và đặt layout_ference = "match_parent" và layout_height = "match_parent", chế độ xem đồ họa sẽ hiển thị như thế này,
match_parent_example
Mã
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.code2care.android.togglebuttonexample.MainActivity" >
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="11dp"
android:background="#FFFFEE"
android:orientation="vertical" >
2. fill_parent:
Điều này giống như match_parent, fill_parent đã bị khấu hao ở cấp độ API 8. Vì vậy, nếu bạn đang sử dụng API cấp 8 trở lên, bạn phải tránh sử dụng fill_parent
Hãy làm theo các bước tương tự như chúng tôi đã làm cho match_parent, thay vào đó chỉ sử dụng fill_parent ở mọi nơi.
Bạn sẽ thấy rằng không có sự khác biệt trong hành vi trong cả fill_parent và cha mẹ khớp.