מערכת Android מציעה מגוון ווידג'טים כדי לספק רכיבים אינטראקטיביים קטנים לשימוש חוזר.
ייתכן גם שתצטרכו להשתמש שוב ברכיבים גדולים יותר שדורשים פריסה מיוחדת. כדי לעשות שימוש חוזר ביעילות
בפריסה מלאה, יש להשתמש בתגים <include>
ו-<merge>
כדי להטמיע
פריסה אחת בתוך פריסה אחרת.
כך ניתן ליצור פריסות מורכבות – כמו חלונית לחצנים מסוג 'כן' או 'לא' או התקדמות מותאמת אישית
עמודה עם טקסט תיאור. והמשמעות היא שתוכלו לחלץ רכיבים באפליקציה
נפוצים בכמה פריסות, מנהלים אותם בנפרד וכוללים אותם בכל פריסה. בזמן
אפשר ליצור רכיבים נפרדים בממשק המשתמש על ידי כתיבת
View
, יהיה לך קל יותר לעשות זאת בעזרת
שימוש חוזר בקובץ פריסה.
יצירת פריסה לשימוש חוזר
מתחילים ביצירת קובץ XML חדש ומגדירים את הפריסה שבה רוצים להשתמש שוב. עבור
הנה פריסה, למשל, שמגדירה סרגל כותרת שצריך לכלול בכל פעילות.
(titlebar.xml
):
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/titlebar_bg" tools:showIn="@layout/activity_main" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/gafricalogo" /> </FrameLayout>
ערך השורש View
חייב להופיע בדיוק איך שרוצים שהוא יופיע
הפריסה שבה אתם מתכננים להוסיף את הפריסה הזו.
משתמשים בפרמטר <include> תג
בתוך הפריסה שבה רוצים להוסיף את הרכיב לשימוש חוזר, מוסיפים את
תג <include>
. לדוגמה, זוהי פריסה שכוללת את סרגל הכותרת מ-
בדוגמה הקודמת:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/app_bg" android:gravity="center_horizontal"> <include layout="@layout/titlebar"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/hello" android:padding="10dp" /> ... </LinearLayout>
אפשר גם לשנות את כל הפרמטרים של הפריסה, כל android:layout_*
.
של תצוגת השורש של הפריסה הכלולה, על ידי ציון
תג <include>
. אפשר לראות זאת בדוגמה הבאה:
<include android:id="@+id/news_title" android:layout_width="match_parent" android:layout_height="match_parent" layout="@layout/title"/>
אבל, אם רוצים לשנות את מאפייני הפריסה באמצעות התג <include>
,
גם לשנות את android:layout_height
ואת android:layout_width
כדי להפוך את
מאפייני פריסה אחרים ייכנסו לתוקף.
שימוש במאפיין <Merge> תג
התג <merge>
עוזר להסיר קבוצות צפיות מיותרות בהיררכיית התצוגות
כאשר כוללים פריסה אחת בתוך פריסה אחרת. תרחיש לדוגמה אחד של <merge>
הוא כאשר
להטמיע תצוגה מותאמת אישית על ידי הרחבה של ViewGroup
.
לדוגמה, אם הפריסה הראשית היא לאורך
LinearLayout
שבו שתיים
בתצוגות עוקבות, שניתן לעשות שימוש חוזר בכמה פריסות, ואז בפריסה לשימוש חוזר
לשתי תצוגות מפורטות נדרשת תצוגת בסיס משלה. עם זאת, שימוש ב-LinearLayout
אחר ברמה הבסיסית (root)
לפריסה לשימוש חוזר, תוצאות ב-LinearLayout
בפורמט אנכי בתוך תעשייה
LinearLayout
השדה LinearLayout
הפנימי לא משמש למטרה אמיתית והוא איטי
את הביצועים של ממשק המשתמש.
במקום זאת, אפשר להרחיב LinearLayout
כדי ליצור תצוגה מותאמת אישית ולהשתמש ב-XML של פריסה.
כדי לתאר את צפיות הצאצא שלו. התג העליון ב-XML הוא <merge>
, במקום
LinearLayout
, כמו בדוגמה הבאה:
<merge xmlns:android="http://schemas.android.com/apk/res/android"> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/add"/> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/delete"/> </merge>
כשכוללים את הפריסה הזו בפריסה אחרת – באמצעות <include>
תג - המערכת מתעלמת מהאלמנט <merge>
ומציבה את שני הלחצנים
ישירות בפריסה, במקום התג <include>
.
מידע נוסף על <include>
זמין במאמר
משאב פריסה.