ใน 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 , ImageView
a 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_parent
layout_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 ขึ้นไป