LinearLayout, RelativeLayout และ AbsoluteLayout ต่างกันอย่างไร


180

ฉันสับสนเกี่ยวกับความแตกต่างระหว่าง LinearLayout, RelativeLayout และ AbsoluteLayout ใครช่วยกรุณาบอกความแตกต่างที่แน่นอนระหว่างพวกเขา

คำตอบ:


213

LinearLayout หมายความว่าคุณสามารถจัดมุมมองทีละหนึ่ง (แนวตั้ง / แนวนอน)

RelativeLayout หมายถึงความสัมพันธ์ของมุมมองจากผู้ปกครองและมุมมองอื่น ๆ

ConstraintLayout คล้ายกับ RelativeLayout ซึ่งใช้ความสัมพันธ์กับวิดเจ็ตตำแหน่งและขนาด แต่มีความยืดหยุ่นเพิ่มเติมและใช้งานได้ง่ายขึ้นใน Layout Editor

WebView เพื่อโหลดหน้า html, สแตติกหรือไดนามิก

FrameLayout เมื่อต้องการโหลดเด็กด้านบนอีกคนหนึ่งเช่นการ์ดภายในกรอบเราสามารถวางเด็กด้านบนอีกคนหนึ่งหรือที่ใดก็ได้ภายในกรอบ

เลิกใช้แล้ว - AbsoluteLayoutหมายถึงคุณต้องให้ตำแหน่งที่แน่นอนที่ควรมีมุมมอง

สำหรับข้อมูลเพิ่มเติมโปรดตรวจสอบที่อยู่นี้https://developer.android.com/guide/topics/ui/declaring-layout#CommonLayouts


2
ตรวจสอบลิงค์นี้ยังเพื่อน .. mobiforge.com/designing/story/
Ganapathy C

2
AbsoluteLayout เลิกใช้แล้ว!
ทอด

3
@ ทอดฉันตอบคำถามนี้ก่อน 2 ปี โปรดอ่านคำถาม
Ganapathy C

เห็นได้ชัดว่าAbsoluteLayoutถูกปฏิเสธด้วยเหตุผล; หากเนื้อหาไม่เหมาะสมก็จะส่งแบบสุ่ม คุณจะดีกว่าด้วยLinearLayoutและการตั้งค่าทั้งหมดของ paddings 0ในการ
EpicPandaForce

50

คำนิยาม:

  • เลย์เอาต์เฟรม: นี่คือการออกแบบเพื่อบล็อกพื้นที่บนหน้าจอเพื่อแสดงรายการเดียว
  • Linear Layout: เค้าโครงที่จัดเรียงลูกไว้ในคอลัมน์เดียวหรือแถวเดียว
  • เค้าโครงที่สัมพันธ์กัน: เค้าโครงนี้เป็นกลุ่มมุมมองที่แสดงมุมมองชายด์ในตำแหน่งสัมพัทธ์
  • เค้าโครงตาราง: เค้าโครงที่จัดเรียงลูกไว้ในแถวและคอลัมน์

ข้อมูลมากกว่านี้:

FrameLayout

FrameLayout ถูกออกแบบมาเพื่อบล็อกพื้นที่บนหน้าจอเพื่อแสดงรายการเดียว โดยทั่วไปแล้ว FrameLayout ควรใช้เพื่อเก็บมุมมองลูกเดียวเพราะมันอาจเป็นเรื่องยากที่จะจัดระเบียบมุมมองเด็กในวิธีที่ปรับขนาดได้ตามขนาดหน้าจอที่แตกต่างกันโดยที่เด็กไม่ทับซ้อนกัน อย่างไรก็ตามคุณสามารถเพิ่มเด็ก ๆ หลาย ๆ คนลงใน FrameLayout และควบคุมตำแหน่งของพวกเขาภายใน FrameLayout โดยกำหนดแรงโน้มถ่วงให้กับเด็กแต่ละคนโดยใช้android:layout_gravityคุณลักษณะ

มุมมองชายด์จะถูกวาดในสแต็กโดยมีชายด์ที่เพิ่มล่าสุดอยู่ด้านบน ขนาดของ FrameLayout คือขนาดของลูกที่ใหญ่ที่สุด (บวกการขยาย) มองเห็นได้หรือไม่ (ถ้าพาเรนต์ของ FrameLayout อนุญาต)

RelativeLayout

RelativeLayout เป็นเครื่องมือที่ทรงพลังมากสำหรับการออกแบบส่วนต่อประสานผู้ใช้เพราะมันสามารถกำจัดกลุ่มมุมมองที่ซ้อนกันและทำให้ลำดับชั้นโครงร่างของคุณแบนซึ่งช่วยปรับปรุงประสิทธิภาพ หากคุณพบว่าตัวเองใช้กลุ่ม LinearLayout ซ้อนกันหลายกลุ่มคุณอาจสามารถแทนที่พวกเขาด้วย RelativeLayout กลุ่มเดียว

(เอกสารปัจจุบันที่นี่ )

TableLayout

TableLayout ประกอบด้วยTableRowวัตถุจำนวนหนึ่งโดยแต่ละอันจะกำหนดแถว (ที่จริงแล้วคุณสามารถมีลูกคนอื่นซึ่งจะอธิบายด้านล่าง) TableLayout คอนเทนเนอร์ไม่แสดงเส้นขอบสำหรับแถวคอลัมน์หรือเซลล์ แต่ละแถวมีศูนย์หรือมากกว่าเซลล์ แต่ละเซลล์สามารถเก็บวัตถุมุมมองหนึ่งรายการ ตารางมีคอลัมน์ได้มากเท่ากับแถวที่มีเซลล์มากที่สุด ตารางสามารถปล่อยเซลล์ให้ว่างได้ เซลล์สามารถขยายคอลัมน์ได้เช่นเดียวกับใน HTML

ความกว้างของคอลัมน์ถูกกำหนดโดยแถวที่มีเซลล์กว้างที่สุดในคอลัมน์นั้น


หมายเหตุ : รูปแบบแอบโซลูทจะเลิกใช้


4

LinearLayout:เลย์เอาต์ที่จัดระเบียบลูก ๆ ให้เป็นแถวแนวนอนหรือแนวตั้ง มันสร้างแถบเลื่อนถ้าความยาวของหน้าต่างเกินความยาวของหน้าจอมันหมายความว่าคุณสามารถจัดมุมมองทีละคน (แนวตั้ง / แนวนอน)

RelativeLayout:สิ่งนี้ช่วยให้คุณสามารถระบุตำแหน่งของวัตถุลูกที่สัมพันธ์กัน (ลูก A ทางด้านซ้ายของเด็ก B) หรือไปยังผู้ปกครอง (ชิดกับด้านบนของผู้ปกครอง) มันขึ้นอยู่กับความสัมพันธ์ของมุมมองจากผู้ปกครองและมุมมองอื่น ๆ

WebView:เพื่อโหลดหน้า html, สแตติกหรือไดนามิก

สำหรับข้อมูลเพิ่มเติมอ้างอิงลิงค์นี้: http://developer.android.com/guide/topics/ui/layout-objects.html


4

LinearLayout - ใน LinearLayout มุมมองจะถูกจัดระเบียบทั้งในแนวตั้งหรือแนวนอน

RelativeLayout - RelativeLayout เป็นวิธีที่ซับซ้อนกว่า LinearLayout ดังนั้นจึงมีฟังก์ชันการทำงานที่มากขึ้น มุมมองถูกวางไว้ตามชื่อที่แนะนำซึ่งสัมพันธ์กัน

FrameLayout - มันทำงานเป็นวัตถุเดียวและมุมมองลูกของมันจะซ้อนทับกัน FrameLayout ใช้ขนาดตามองค์ประกอบลูกที่ใหญ่ที่สุด

เค้าโครงผู้ประสานงาน - นี่คือ ViewGroup ที่ทรงพลังที่สุดที่เปิดตัวในห้องสมุดสนับสนุน Android มันทำงานเป็น FrameLayout และมีฟังก์ชั่นมากมายในการประสานงานระหว่างมุมมองลูกเช่นปุ่มลอยและสแน็คบาร์แถบเครื่องมือที่มีมุมมองที่เลื่อนได้


2

คำอธิบายที่ดีที่นี่:
https://www.cuelogic.com/blog/using-framelayout-for-designing-xml-layouts-in-android

LinearLayoutจัดเรียงองค์ประกอบเคียงข้างกันทั้งแนวนอนหรือแนวตั้ง

RelativeLayoutช่วยให้คุณจัดเรียงองค์ประกอบ UI ของคุณตามกฎเฉพาะ คุณสามารถระบุกฎเช่น: จัดเรียงสิ่งนี้กับขอบซ้ายของผู้ปกครองวางสิ่งนี้ไว้ที่ด้านซ้าย / ขวาขององค์ประกอบนี้เป็นต้น

AbsoluteLayoutสำหรับการจัดตำแหน่งแบบสัมบูรณ์เช่นคุณสามารถระบุพิกัดที่แน่นอนที่มุมมองควรไป

FrameLayoutช่วยให้ตำแหน่งของการดูตามแนวแกน Z ซึ่งหมายความว่าคุณสามารถซ้อนองค์ประกอบมุมมองของคุณหนึ่งองค์ประกอบเหนืออื่น ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.