LinearLayout
היא קבוצת תצוגה שמיישרת את כל הצאצאים בכיוון אחד, אנכית או אופקית. אפשר לציין את כיוון הפריסה באמצעות המאפיין android:orientation.
LinearLayout עם שלושה צאצאים אופקיים.
כל הצאצאים של LinearLayout מוצגים אחד אחרי השני, כך שברשימה אנכית יש רק צאצא אחד בכל שורה, לא משנה כמה רחבה היא. רשימה אופקית היא רק שורה אחת בגובה, והגובה שלה הוא הגובה של רכיב הצאצא הכי גבוה, בתוספת ריווח פנימי. LinearLayout מכבד את השוליים בין רכיבי הצאצא, ואת המיקום – יישור לימין, למרכז או לשמאל – של כל רכיב צאצא.
משקל הפריסה
LinearLayout תומך גם בהקצאת משקל לכל פריט צאצא באמצעות המאפיין android:layout_weight. במאפיין הזה מוקצה ערך של 'חשיבות' לתצוגה מבחינת השטח שהיא תופסת על המסך. ערך משקל גבוה יותר מאפשר להרחיב את התצוגה כדי למלא את השטח שנותר בתצוגת האב. בתצוגות צאצא אפשר לציין ערך משקל, וכל המקום שנותר בקבוצת התצוגות מוקצה לצאצאים באופן יחסי, על סמך המשקל המוצהר שלהם. משקל ברירת המחדל הוא אפס.
חלוקה שווה
כדי ליצור פריסה לינארית שבה כל רכיב צאצא משתמש באותו נפח של מקום במסך, צריך להגדיר את android:layout_height של כל תצוגה כ-"0dp" עבור פריסה אנכית, או את android:layout_width של כל תצוגה כ-"0dp" עבור פריסה אופקית. לאחר מכן מגדירים את
android:layout_weight של כל תצוגה ל-"1".
חלוקה לא שווה
אפשר גם ליצור פריסות לינאריות שבהן רכיבי הצאצא משתמשים בכמויות שונות של מקום במסך. מומלץ להביא בחשבון את הדוגמאות הבאות:
- נניח שיש לכם שלושה שדות טקסט: שניים עם ערך משקל של 1, ושלישי עם ערך המשקל שמוגדר כברירת מחדל, 0. שדה הטקסט השלישי, עם ערך המשקל 0, תופס רק את האזור שנדרש לתוכן שלו. שני שדות הטקסט האחרים, עם ערך המשקל 1, מתרחבים באופן שווה כדי למלא את המקום שנשאר אחרי שהמערכת מודדת את התוכן של כל שלושת השדות.
- אם במקום זאת יש לכם שלושה שדות טקסט, שניים עם ערך משקל של 1 והשלישי עם משקל של 2, אז השטח שנותר אחרי מדידת התוכן של כל שלושת השדות יוקצה באופן הבא: חצי לשדה עם ערך המשקל של 2, וחצי יחולק באופן שווה בין השדות עם ערך המשקל של 1.
באיור ובקטע הקוד הבאים מוצג איך משקלים של פריסות יכולים לפעול בפעילות של 'שליחת הודעה'. השדה אל, השורה נושא והלחצן שליחה תופסים רק את הגובה שהם צריכים. אזור ההודעה תופס את שאר הגובה של הפעילות.
LinearLayout.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="16dp" android:paddingRight="16dp" android:orientation="vertical" > <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/to" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/subject" /> <EditText android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:gravity="top" android:hint="@string/message" /> <Button android:layout_width="100dp" android:layout_height="wrap_content" android:layout_gravity="end" android:text="@string/send" /> </LinearLayout>
פרטים על המאפיינים שזמינים בכל תצוגה לילדים של LinearLayout מופיעים במאמר LinearLayout.LayoutParams.