
RelativeLayout: כל רכיב מסודר ביחס לרכיב אחר או ביחס למסך. מתאים למסך הרשמה שבו שדות מוצבים אחד ליד השני.LinearLayout: רכיבים אחד מתחת לשני או אחד ליד השני, למשל מסך login.FrameLayout: רכיב על רכיב, וכל אחד מוצב לפי קצה במסך.TableLayout ו-GridLayout: מציגים מידע בצורת טבלה.AbsoluteLayout: רכיבים ממוקמים לפי קואורדינטות X ו-Y.layout_width ו-layout_height יכולים להיות ערך כמו 200dp, wrap_content (לפי התוכן) או match_parent (כל ה-parent). width ו-height רגילים משמשים כשהרכיב לא נמצא ישירות ב-Layout, ושם אין wrap_content ו-match_parent.margin ו-padding: margin הוא מרווח בין הרכיב לאחרים, ו-padding הוא ריפוד בין התוכן לגבולות הרכיב. לשניהם יש גרסאות לשמאל, לימין, למעלה ולמטה, או ערך אחד לכל הצדדים.centerHorizontal, centerVertical ו-centerInParent מקבלים true. alignParentTop, alignParentBottom, alignParentLeft ו-alignParentRight מצמידים לקצה.layout_gravity מול gravity: הראשון קובע איפה הרכיב נמצא ביחס ל-parent שלו, והשני קובע איפה התוכן נמצא בתוך הרכיב. אפשר לשלב ערכים עם |, למשל center_horizontal|bottom.toLeftOf, toRightOf, above, below, alignLeft, alignRight, alignTop, alignBottom ו-alignBaseline. כולם מתייחסים ל-ID של הרכיב השני, ולכן חייבים לתת לו ID.orientation: תכונה של LinearLayout בלבד. ברירת המחדל היא אופקית (horizontal), ו-vertical מסדר אחד מתחת לשני.weight: מחלק מקום ביחס לערכים. אם משפיעים על הרוחב, מגדירים לכל רכיב רוחב 0dp. אם על הגובה, מגדירים גובה 0dp ו-orientation אנכי. משקל 2 לעומת 1 נותן פי שניים.הטקסט המלא של הדקות הראשונות בהרצאה «Layout» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אנחנו מגיעים לנושא חדש שנקרא Layouts. Layout זה בעצם תגית שמגדירה איך הרכיבים שנמצאים בתוכה מסודרים אחד יחסית לשני או ביחס למסך עצמו.
כאשר אנחנו בונים מסך כלשהו באפליקציה אנחנו חייבים להגדיר איזשהו Layout בשביל להגדיר איך כל הרכיבים מסודרים ביחס לעצמם או ביחס למסך כולו. אילו רכיבי ליהאוט קיימים.
ראשית, קיים רכיב שנקרא RelativeLayout. RelativeLayout מסדר כל רכיב ביחס לרכיב אחר או ביחס למסך עצמו. כאן אנחנו יכולים לראות דוגמה של איזשהו מסך שאנחנו יכולים לסדר אותו בצורה נוחה על ידי RelativeLayout.
נניח שאנחנו רוצים בראש המסך לשים איזושהי טקסט view כזה של רג'יסטר ולהגדיר שמתחתיו כמעט באמצע יושב לנו אדיט טקסט, משמאלו יושב עוד טקסט view שכתוב עליו full name, מתחת לטקסט view הזה יש עוד טקסט view שנקרא e-mail ומימינו אדיט טקסט נוסף וככה להתחיל לסדר את הרכיבים אחד ביחס לשני.
אז אם אנחנו רוצים לסדר אותם אחד ביחס לשני פה יחסית למסך יש לנו את הרלטיב layout, לייעוט יחסי התגית הבאה שקיימת נקראת ליניאר לייעוט ליניאר לייעוט מאפשרת להגדיר רכיבים אחד מתחת לשני או אחד ליד השני לא אחד יחסית לשני במיקום אחר אם לדוגמה יש לנו מסך שבו אנחנו פחות או יותר רוצים לראות אחד מתחת לשני כמו שאנחנו רואים כאן תגית לוג אין למעלה מתחתיה יוזרניים מתחתיה אדי טקסט
מתחתיה פסוורד, מתחתיה עוד אדי טקסט וכן הלאה, אז ליניאר לייאוט יכול יותר להתאים לנו. שימו לב שיש לנו פה שני לחצנים אחד ליד השני, וגם כאן אנחנו יכולים להגדיר ליניאר לייאוט שמכיל את שניהם אחד ליד השני.
התגית הבאה שקיימת לנו נקראת פריים לייאוט. פריים לייאוט מאפשרת להגדיר תגית על תגית, כלומר רכיב על רכיב ופשוט להגדיר כל אחד מהרכיבים האלה לאן לזרוק אותו ביחס למסך.
אז כאן אנחנו רואים דוגמה למסך שבו לקחנו איזושהי תגית של טקסט ויו שכתוב טיפ אוף דה דיי וזרקנו אותה למעלה, עוד תגית טקסט ויו נמצאת בדיוק באמצע, שני לחצנים נמצאים למטה אחד ימין אחד שמאל, ככה אנחנו יכולים לזרוק כל תגית שנמצאת בתוך הפריים לאאוטס, לאחד מהקצוות של המסך
וזה יהיה Frame Layout. התגית הלייאוט הבאה שקיימת נקראת Table Layout. כאן אנחנו יכולים להגדיר מידע שנראה בצורה פחות או יותר כמו טבלה.
מאוד סטרייט פורוורד. התגית הבאה שיש לנו נקראת Grid Layout וגם היא מאפשרת להגדיר משהו שדומה לטבלה. אנחנו נראה בהמשך איפה כדאי להשתמש עם זאת ואיפה כדאי להשתמש עם זאת.
השגית הבאה נקראת Absolute Layout. Absolute Layout מאפשרת להגדיר רכיבים יחסית למסך מבחינת X ו-Y. כאן אנחנו יכולים להגדיר שהיוזרניים נמצא לדוגמה ב-X 50, Y 50, שהאדי טקסט נמצאת ב-X לדוגמה 150 וב-Y 50 וכן הלאה.
אחרי שהבנו את רכיבי הלייאוטס השונים, בואו נתחיל לראות אילו פרופרטיז קיימים בלייאוטס. עכשיו אנחנו הולכים לראות סדרה של פרופרטיז, כלומר כל מיני מאפיינים שניתן לתת אותם גם לרכיבי הלייאוט וגם לצ'יילדס שנמצאים בתוך רכיבי הלייאוט ואנחנו הולכים לסרוק סדרה מרובה של פרופרטיז כאלה אבל שימו לב שחלק
מהפרופרטיז תקפים ללייאוט ספציפיים חלק תקפים לכל הלייאוטס ומה מה שפשוט תצטרכו לעשות זה א' להיות מודעים לזה שקיימים הפרופרטיז האלה ומה פשוט הם מציינים ואם אתם מנסים אז תראו פשוט איזה פרופרטי שייך לאיזה לייאוט יכול להיות שתראו פה איזשהו פרופרטי מסוים שפשוט לא יהיה
קיים בלייאוט ספציפי ואי אפשר להשתמש איתו באותו הלייאוט אז כאן אתם צריכים טיפה לשחק עם זה ולראות איזה פרופרטי שייך לאיזה לייאוט בואו נתחיל יש לנו פרופרטי שנקרא layout-width.
layout-width זה פשוט הרוחב של הרכיב יחסית ל-layout. אנחנו יכולים פשוט לקחת לדוגמה לחצן ולתת לו 200 dp והוא יתפוס 200 dp. יש לנו אפשרות ב-layout-width להגדיר גם wrap-content וזה אומר שאנחנו רוצים שהרוחב שלו יתפוס בדיוק לפי התוכן שלו.
אם כתוב עליו בטרן אתם רואים שהוא תופס בדיוק את הרוחב שמספיק בשביל שהמילה Button תיכנס בתוכו. יש לנו אפשרות גם לתת Match Parent, ואז הרכיב תופס את כל הרוחב של ה-Parent שלו.
הלחצן נמצא באיזשהו Layout, והוא תופס כרגע את כל רוחב ה-Layout. כמו שיש לנו Layout Wid, יש לנו גם Layout Height. כאן אנחנו יכולים לתת גובה לרכיב, פה נתנו 200 dp כגובה של הלחצן, כאן נתנו Wrap Content ואז הוא תופס בדיוק לפי המילה Button שבתוכו וכאן נתנו Match Parent והוא תופס את כל הגובה של ה-Layout שמקיף אותו.
התכונה הבאה זה Weed. מקודם ראינו Layout Weed. ברוב המקרים אנחנו נהיה חייבים לתת Layout Weed בכדי שלחצן יוכל לתפוס בדיוק את הרוחב שהוא צריך יחסית ל-Layout שלו.
במקרים יותר נדירים אנחנו לא נצטרך לתת Layout Weed ונוכל לתת פשוט וויד רגיל אם הלחצן לא נמצא ישירות בתוך לאי-אאוט אלא נמצא בתוך רכיב אחר שלא נחשב כלאי-אאוט כאן אנחנו יכולים לתת לו וויד לדוגמה 200 dp אבל אנחנו לא יכולים לתת לו ראפ קונטנט או מאצ' פרנק כנ"ל יש לנו הייט שוב אנחנו יכולים לתת הייט אם
הלחצן לא נמצא ישירות בתוך לאי-אאוט אלא בתוך רכיב אחר אנחנו נראה בהמשך איפה זה מתבצע ופה אנחנו יכולים גם לתת לו יחידות מידע ספציפיות אבל לא ראפ קונטנט או מאצ' פרנט.
המאפיין הבא קשור למרג'ין. מרג'ין בעברית זה שוליים. יש לנו אפשרות להגדיר מרווח בין הרכיב לבין רכיבים אחרים. אנחנו רואים פה לחצן באמצע ועוד איזה ארבעה לחצנים שמקיפים אותו בצבע כזה כחול כהה.
אם אנחנו נותנים ללחצן שבאמצע מרג'ין לפט 50 dp אמרנו שאנחנו רוצים שהמרווח מצד שמאל שלו יהיה בדיוק 50 dp ולכן אנחנו רואים את הלחצן שצמוד אליו זז עוד שמאלה ויש מרווח ביניהם של 50 dp אותו הדבר יש לנו אפשרות להגדיר מרג'ין רייט יש לנו אפשרות להגדיר מרג'ין טופ מרג'ין בוטום או פשוט לתת מרג'ין אחד לכולם ופשוט אנחנו מגדירים
שוליים שווים מסביב לרכיב שקיבל את התכונה הזאת. התכונה הבאה שקשורה לזה נקראת padding. padding בעברית זה ריפוד או לנפח משהו, יותר לרפד אותו.
padding left אומר כמה המרווח בין התוכן של הרכיב לשוליים השמאליים שלו. ושימו לב שבאמת נהיה לנו פה איזשהו מרווח בין המילה לבין הגבול השמאלי של הלחצן אותו הדבר יש לנו אפשרות להגדיר padding right ואז הריפוד כביכול הופך להיות מימין יש לנו אפשרות להגדיר padding top padding bottom או פשוט padding אחד שווה
לכל הצדדים של התוכן של הלחצן התכונה הבאה נקראת Center Horizontal והיא מאפשרת להגדיר שהרכיב פשוט נמצא באמצע של ה-Layout מבחינה הוריזנטלית כלומר מבחינה אופקית אותו הדבר יש לנו Center Vertical ואנחנו מגדירים שהוא נמצא באמצע מבחינה אנכית שימו לב ששני אלה מקבלים פשוט True והופכים להיות והופכים להגדיר שהרכיב הזה בעצם נמצא באמצע או שיש לנו פשוט Center עם פרנט שזורק אותנו למרכז של הפרנט שלו.
התכונה הבאה שקיימת לנו היא Align Parent Top. כאן אנחנו רואים שיש לנו אפשרות להגדיר שהרכיב מוצמד לאחד הצדדים של הפרנט שלו.
פה אנחנו רואים שהוא מוצמד למעלה. יש לנו את Align Parent Bottom שמוצמד למטה, יש לנו את Align Parent Left שמוצמד שמאלה, במקרה בגלל שהוא הראשון אז גם הוא למעלה, ו-Align Parent Right מוצמד ימינה.
יש לנו אפשרות להגדיר משהו שנקרא Layout Gravity ויש לנו אפשרות להגדיר תכונה שנקראת פשוט Gravity. תכף נבין מה ההבדל ביניהם. Layout Gravity מציינת מה היחס של הרכיב או מה המיקום של הרכיב יחסית ל-Parent שלו מבחינת Left, Right, Top,
Bottom וכולי. גראביטי מגדירה מה היחס של התוכן של הרכיב יחסית לרכיב עצמו. אז בואו קודם כל נראה לאאוט גראביטי. אם אנחנו מגדירים לאאוט גראביטי לפט זה אומר שפשוט זרקנו את הרכיב שמאלה.
אם אנחנו מגדירים לאאוט גראביטי רייט זרקנו את הרכיב ימינה. אם אנחנו מגדירים לאאוט גראביטי סנטר אוריזונטל שמנו אותו פשוט באמצע מבחינה אופקית.
שימו לב רק שיש אפשרות להגיע לתכונה מסוימת או לאפקט מסוים במספר תכונות. מקודם ראינו שעוד תכונות הצליחו להגדיר את הרכיבים האלה שמאלה, ימינה או באמצע.
אז אתם יכולים לבחור מה שהכי נוח לכם, העיקר שהוא יעשה את העבודה. אז Layout Gravity Center Horizontal פשוט שם את הרכיב באמצע מבחינה אופקית. Layout Gravity Center Vertical שם את הרכיב באמצע מבחינה אנכית.
ליהוט גרוויטי בוטום פשוט זורק אותו למטה וליהוט גרוויטי סנטר שם אותו באמצע. אבל אנחנו יכולים לשלב כמה ליהוט גרוויטיז ביחד.
לדוגמה אנחנו יכולים להגדיר שהליהוט גרוויטי שלו הוא סנטר הוריזונטל קו בוטום.