ใน Android เมื่อเลย์เอาต์วิดเจ็ตอะไรคือความแตกต่างระหว่างfill_parent( match_parentในระดับ API 8 และสูงกว่า) และwrap_contentอะไร
มีเอกสารใดบ้างที่คุณสามารถชี้ไปที่ได้หรือไม่ ฉันสนใจที่จะเข้าใจมันเป็นอย่างดี
ใน Android เมื่อเลย์เอาต์วิดเจ็ตอะไรคือความแตกต่างระหว่างfill_parent( match_parentในระดับ API 8 และสูงกว่า) และwrap_contentอะไร
มีเอกสารใดบ้างที่คุณสามารถชี้ไปที่ได้หรือไม่ ฉันสนใจที่จะเข้าใจมันเป็นอย่างดี
คำตอบ:
แอ็ตทริบิวต์ทั้งสามารถนำไปใช้กับขนาดแนวนอนหรือแนวตั้งของมุมมอง (การควบคุมภาพ) มันถูกใช้เพื่อตั้งค่าขนาดมุมมองหรือเลย์เอาต์ตามเนื้อหาหรือขนาดของเลย์เอาต์หลักแทนที่จะระบุขนาดอย่างชัดเจน
fill_parent(คัดค้านและเปลี่ยนชื่อMATCH_PARENTในระดับ API 8 ขึ้นไป)
การตั้งค่ารูปแบบของเครื่องมือที่จะ fill_parent ที่จะบังคับให้มันขยายจะใช้เป็นพื้นที่มากที่สุดเท่าที่เป็นองค์ประกอบที่มีอยู่ในรูปแบบที่มันถูกวางไว้ใน. ก็ประมาณเทียบเท่าของการตั้งค่า dockstyle ของการควบคุมแบบฟอร์ม Windows Fillไป
การตั้งค่าเลย์เอาต์ระดับบนสุดหรือตัวควบคุมเป็น Fill_parent จะบังคับให้ใช้ทั้งหน้าจอ
wrap_content
การตั้งค่าขนาดของมุมมองเป็น wrap_content จะบังคับให้ขยายได้มากพอที่จะมีค่า (หรือตัวควบคุมลูก) ที่มีอยู่ สำหรับการควบคุมเช่นกล่องข้อความ (TextView) หรือรูปภาพ (ImageView) - สิ่งนี้จะหุ้มข้อความหรือรูปภาพที่กำลังแสดง สำหรับองค์ประกอบเลย์เอาต์มันจะปรับขนาดเลย์เอาต์ให้พอดีกับส่วนควบคุม / เลย์เอาต์ที่เพิ่มเข้ามาเป็นรายการย่อย
มันเทียบเท่ากับการตั้งค่าAutosizeคุณสมบัติของตัวควบคุมฟอร์มของ Windows เป็นTrue
เอกสารออนไลน์
fill_parent(เลิกใช้แล้ว) =match_parent
เส้นขอบของมุมมองชายด์ขยายเพื่อให้ตรงกับขอบของมุมมองพาเรนต์
wrap_content
เส้นขอบของมุมมองเด็กล้อมรอบเนื้อหาของมันอย่างอบอุ่น
นี่คือภาพบางส่วนที่จะทำให้สิ่งต่าง ๆ ชัดเจนยิ่งขึ้น TextViewsสีเขียวและสีแดง สีขาวเป็นการLinearLayoutแสดงผ่าน

ทุกคนView(a TextView, a , ImageViewa Button, ฯลฯ ) จำเป็นต้องตั้งค่าwidthและheightมุมมอง ในไฟล์โครงร่าง xml ที่อาจมีลักษณะเช่นนี้:
android:layout_width="wrap_content"
android:layout_height="match_parent"
นอกเหนือจากการตั้งค่าความกว้างและความสูงเป็นmatch_parentหรือwrap_contentคุณยังสามารถตั้งค่าเป็นค่าสัมบูรณ์:
android:layout_width="100dp"
android:layout_height="200dp"
โดยทั่วไปแล้วมันไม่ดีเท่าไหร่เพราะมันไม่ยืดหยุ่นสำหรับอุปกรณ์ขนาดต่าง ๆ หลังจากที่คุณมีความเข้าใจwrap_contentและสิ่งต่อไปที่จะได้เรียนรู้คือmatch_parentlayout_weight
LinearLayout แนวตั้ง
<?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>
LinearLayout แนวนอน
<?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>
คำอธิบายในคำตอบนี้ถือว่าไม่มีระยะขอบหรือแพ็ดดิ้ง แต่แม้ว่าจะมีแนวคิดพื้นฐานก็ยังคงเหมือนเดิม เส้นขอบ / ระยะห่างของมุมมองถูกปรับด้วยค่าของระยะขอบหรือช่องว่างภายใน
fill_parent จะทำให้ความกว้างหรือความสูงขององค์ประกอบมีขนาดใหญ่เท่ากับองค์ประกอบหลักหรืออีกนัยหนึ่งคือคอนเทนเนอร์
wrap_content จะทำให้ความกว้างหรือความสูงมีขนาดใหญ่เท่าที่จำเป็นเพื่อให้มีองค์ประกอบอยู่ภายใน
fill_parent :
ส่วนประกอบถูกจัดเรียงเค้าโครงสำหรับการที่fill_parentจะถูกบังคับให้ขยายเพื่อเติมสมาชิกหน่วยโครงร่างให้มากที่สุดเท่าที่เป็นไปได้ในพื้นที่ สิ่งนี้สอดคล้องกับคุณสมบัติ dockstyle ของตัวควบคุม Windows เลย์เอาต์หรือชุดควบคุมด้านบนfill_parentจะบังคับให้ใช้ทั้งหน้าจอ
wrap_content
ตั้งค่ามุมมองขนาดwrap_contentจะถูกบังคับให้ดูขยายเพื่อแสดงเนื้อหาทั้งหมด TextView และ ImageViewควบคุมตัวอย่างเช่นมีการตั้งค่าwrap_contentจะแสดงข้อความภายในทั้งหมดและภาพ องค์ประกอบเค้าโครงจะเปลี่ยนขนาดตามเนื้อหา ตั้งค่ามุมมองขนาดของแอตทริบิวต์ Autosize โดยwrap_contentประมาณเทียบเท่ากับการตั้งค่าการควบคุม Windows สำหรับ True
สำหรับรายละเอียดโปรดตรวจสอบลิงค์นี้: http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html
fill_parentถูกเปลี่ยนชื่อmatch_parentในระดับ API 8 ขึ้นไป