ฉันเล็ก ๆ น้อย ๆ สับสนเกี่ยวกับสองคุณสมบัติ XML: และmatch_parent
fill_parent
ดูเหมือนว่าทั้งสองจะเหมือนกัน มีความแตกต่างระหว่างพวกเขาหรือไม่?
ฉันเล็ก ๆ น้อย ๆ สับสนเกี่ยวกับสองคุณสมบัติ XML: และmatch_parent
fill_parent
ดูเหมือนว่าทั้งสองจะเหมือนกัน มีความแตกต่างระหว่างพวกเขาหรือไม่?
คำตอบ:
พวกมันเหมือนกัน (ใน API ระดับ 8+) match_parent
ใช้
FILL_PARENT (เปลี่ยนชื่อเป็น MATCH_PARENT ใน API ระดับ 8 ขึ้นไป) ซึ่งหมายความว่ามุมมองต้องการมีขนาดใหญ่เท่ากับพาเรนต์ (ลบด้วยการเติมเต็ม)
...
fill_parent
: มุมมองควรมีขนาดใหญ่เท่ากับพาเรนต์ (ลบด้วยการเติมเต็ม) อย่างต่อเนื่องนี้จะเลิกเริ่มต้นจากระดับ API 8match_parent
และจะถูกแทนที่ด้วย
http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html
-1
ทั้งสองจะถูกกำหนดเป็นค่าคงที่ ฉันรู้สึกดีขึ้นเกี่ยวกับเรื่องนี้ฉันไม่ได้รับความไม่พอใจในสิ่งนั้น ... :-)
-1
ทั้งสองเป็น คุณได้รับข้อผิดพลาดเนื่องจากแพลตฟอร์มเก่าไม่ทราบชื่อใหม่ของค่าคงที่เดียวกันมาก
Google เปลี่ยนชื่อเพื่อหลีกเลี่ยงความสับสน
ปัญหาเกี่ยวกับชื่อเก่าfill parent
คือมันบ่งบอกถึงผลกระทบต่อมิติของผู้ปกครองในขณะmatch parent
ที่อธิบายพฤติกรรมที่เกิดขึ้นได้ดีกว่า - จับคู่มิติกับผู้ปกครอง
ค่าคงที่ทั้งสองค่าคงที่-1
ในที่สุดและส่งผลให้เกิดพฤติกรรมที่เหมือนกันในแอป กระแทกแดกดันพอเปลี่ยนชื่อนี้ทำให้ชัดเจนสิ่งต่าง ๆ ดูเหมือนจะเพิ่มความสับสนมากกว่าการกำจัด
ฟังก์ชั่นไม่แตกต่าง Google เพิ่งเปลี่ยนชื่อจาก fill_parent เป็น match_parent จาก API ระดับ 8 (Android 2.2) FILL_PARENT ยังคงพร้อมใช้งานสำหรับเหตุผลความเข้ากันได้
LayoutParams.FILL_PARENT
และLayoutParams.MATCH_PARENT
ทั้งคู่มีค่า -1 ไม่แน่ใจว่าสิ่งที่ google ต้องการเปลี่ยนจาก Fill Parent เป็น Match parent :)
เนื่องจากphones are >= Android 2.2
.. ส่วนใหญ่คุณควรใช้ Match Parent สำหรับความเข้ากันได้ในอนาคต ... ไม่แน่ใจว่าเมื่อใดพวกเขาจะหยุดค่าคงที่ Fill Parent เก่ากว่า!
เพื่อประโยชน์ในการใช้งานร่วมกันควรติดกับ fill_parent เช่นเมื่อสนับสนุนอุปกรณ์ API 8 ด้านล่าง แต่หากแอปของคุณกำหนดเป้าหมาย API 8 ขึ้นไปคุณควรใช้ match_parent แทน
FILL_PARENT
จะเลิก (ดังกล่าวโดยแมตต์บอลข้างต้น) MATCH_PARENT
จากนั้นเป็นตัวเลือกสำหรับการทำงานร่วมกันเป็นไปข้างหน้า
FILL_PARENT
ถูกเลิกใช้ใน API ระดับ 8 และMATCH_PARENT
ใช้API ระดับสูงกว่า
match_parent จะใช้แทนfill_parentและตั้งค่าให้เป็นไปตามที่ผู้ปกครองไป เพียงแค่ใช้match_parentและลืมเกี่ยวกับfill_parent ฉันทิ้งสมบูรณ์fill_parentและทุกอย่างสมบูรณ์ตามปกติ
ตรวจสอบที่นี่เพื่อเพิ่มเติม
เพียงเพื่อให้มันชื่อที่ใกล้ชิดกับมันการกระทำที่เกิดขึ้นจริง "fill_parent"
ไม่เติมช่องว่างที่เหลือตามชื่อที่บ่งบอก (สำหรับคุณใช้แอตทริบิวต์น้ำหนัก) แต่จะใช้พื้นที่มากเท่ากับพาเรนต์โครงร่าง นั่นคือเหตุผลที่ชื่อใหม่คือ"match_parent"
ทั้งสองมีฟังก์ชั่นที่คล้ายกันแตกต่างกันเพียงอย่างเดียวคือ fill_parent ถูกใช้จนถึง API ระดับ 8 และ match_parent จะใช้หลังจาก API ระดับ 8 ขึ้นไป
เมื่อคุณตั้งค่ารูปแบบwidth
และheight
เป็นmatch_parent
ในXML
สถานที่ให้บริการก็จะครอบครองพื้นที่ที่สมบูรณ์แบบที่มุมมองที่ผู้ปกครองมีคือมันจะเป็นใหญ่เป็นผู้ปกครอง
<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>
แม่กระต่ายสีแดงและลูกเป็นสีเขียว เด็กครอบครองทุกพื้นที่ เพราะมันเป็นwidth
และมีheight
match_parent
หมายเหตุ: หากพาเรนต์ถูกนำไปใช้กับการเว้นวรรคดังนั้นพื้นที่นั้นจะไม่ถูกรวม
<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>
ดังนั้น TextView hight = 300dp (ผู้ปกครองสูง) - (20 (paddingTop) +10 (paddingBottom)) = (300 - 30) dp = 270 dp
fill_parent
เป็นชื่อก่อนหน้าของ match_parent
สำหรับ API ระดับ 8 ขึ้นไปถูกfill_parent
เปลี่ยนชื่อเป็นmatch_parent
และfill_parent
เลิกใช้แล้วในขณะนี้
ดังนั้นfill_parent
และmatch_parent
เหมือนกัน
มุมมองควรมีขนาดใหญ่เท่ากับพาเรนต์ (ลบด้วยการเติมเต็ม) ค่าคงที่นี้ถูกคัดค้านเริ่มต้นจาก API ระดับ 8 และถูกแทนที่ด้วย {@code match_parent}
match_parent ซึ่งหมายความว่ามุมมองต้องการมีขนาดใหญ่เท่ากับพาเรนต์ (ลบด้วยการเติมเต็ม)
wrap_content ซึ่งหมายความว่ามุมมองต้องการมีขนาดใหญ่พอที่จะล้อมรอบเนื้อหา (บวกกับการเติมเต็ม)
เพื่อภาพประกอบที่ดีขึ้นฉันได้สร้างเค้าโครงตัวอย่างที่แสดงถึงแนวคิดนี้ เพื่อดูผลของมันฉันเพิ่มเส้นขอบของเนื้อหาข้อความแต่ละรายการ
ในเนื้อหาข้อความ "จับคู่พ่อแม่" เราจะเห็นว่าความกว้างของเค้าโครงนั้นยาวออกไป
แต่เราสามารถเห็นได้ในเนื้อหาแบบข้อความ "ห่อเนื้อหา" ความกว้างของเลย์เอาต์ห่อด้วยความยาวของเนื้อหา (เนื้อหาตัด)
match_parent
และfill_parent
เป็นคุณสมบัติเดียวกันที่ใช้กำหนดความกว้างหรือความสูงของมุมมองแบบเต็มหน้าจอในแนวนอนหรือแนวตั้ง
คุณสมบัติเหล่านี้ใช้ในไฟล์ android xml แบบนี้
android:layout_width="match_parent"
android:layout_height="fill_parent"
หรือ
android:layout_width="fill_parent"
android:layout_height="match_parent"
fill_parent
ถูกนำมาใช้ในรุ่นก่อนหน้า match_parent
แต่ตอนนี้มันได้รับการคัดค้านและถูกแทนที่ด้วย ฉันหวังว่ามันจะช่วยคุณ
fill_parent: มุมมองควรมีขนาดใหญ่เท่ากับพาเรนต์
ตอนนี้เนื้อหานี้ fill_parent เลิกใช้แล้วและแทนที่ด้วย match_parent
ให้ฉันเติมผู้ปกครองและจับคู่ผู้ปกครองทำหน้าที่เดียวกันเท่านั้นที่:
parent parent : ถูกใช้ก่อน API 8
ตรงกับผู้ปกครอง นี้ถูกใช้จาก API 8+ ฟังก์ชั่นของทั้งสอง เติมมุมมองผู้ปกครองนอกเหนือจากการขยาย
FILL_PARENT ถูกเปลี่ยนชื่อ MATCH_PARENT ใน API ระดับ 8 ขึ้นไปซึ่งหมายความว่ามุมมองต้องการมีขนาดใหญ่เท่ากับพาเรนต์ (ลบด้วยการแพ็ด) - Google
FILL_PARENT
เลิกใช้แล้วจาก API ระดับ 8 ขึ้นไปและเปลี่ยนชื่อเป็นเวอร์ชันด้านบนเป็น MATCH_PARENT
ทั้งสองเหมือนกันFILL_PARENT
และMATCH_PARENT
, FILL_PARENT
ถูกนำมาใช้ในรุ่นต่ำน้อยกว่าระดับ API 8 และ MATCH_PATENT จะใช้ในระดับสูง API สูงกว่า 8
FILL_PARENT
(เปลี่ยนชื่อMATCH_PARENT
ใน API ระดับ 8 ขึ้นไป) ซึ่งหมายความว่ามุมมองต้องการมีขนาดใหญ่เท่ากับพาเรนต์ (ลบด้วยการเติมเต็ม)
fill_parent
: มุมมองควรมีขนาดใหญ่เท่ากับพาเรนต์ (ลบด้วยการเติมเต็ม) อย่างต่อเนื่องนี้จะเลิกเริ่มต้นจากระดับ API 8 match_parent
และจะถูกแทนที่ด้วย
สำหรับรายละเอียดเพิ่มเติมกรุณาเยี่ยมชมหน้านี้
1. match_parent
เมื่อคุณตั้งค่าความกว้างและความสูงของเลย์เอาต์เป็น match_parent มันจะครอบครองพื้นที่ทั้งหมดที่มุมมองพาเรนต์มีอยู่ซึ่งจะใหญ่พอ ๆ กับพาเรนต์
หมายเหตุ : หากพาเรนต์ถูกนำไปใช้กับการเว้นวรรคดังนั้นพื้นที่นั้นจะไม่ถูกรวม
เมื่อเราสร้าง layout.xml ตามค่าเริ่มต้นเราจะใช้ RelativeLayout เป็นมุมมองพาเรนต์เริ่มต้นพร้อมกับ 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"
ตอนนี้ให้เพิ่มมุมมองเชิงเส้นย่อย LinearLayout และตั้งค่า layout_width = "match_parent" และ layout_height = "match_parent" มุมมองกราฟิกจะแสดงบางอย่างเช่นนี้
match_parent_example
รหัส
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:
สิ่งนี้เหมือนกับ match_parent, fill_parent ถูกคิดค่าเสื่อมราคาในระดับ API 8 ดังนั้นหากคุณใช้ API ระดับ 8 ขึ้นไปคุณต้องหลีกเลี่ยงการใช้ fill_parent
ให้ทำตามขั้นตอนเดียวกับที่เราทำกับ match_parent เพียงใช้ fill_parent ทุกที่แทน
คุณจะเห็นว่าทั้งพฤติกรรม fill_parent และการจับคู่หลักไม่แตกต่างกัน