מושגים והטמעה ב-Jetpack פיתוח נייטיב
Android Studio תומך במגוון מאפייני XML במרחב השמות tools שמאפשרים תכונות בזמן העיצוב, כמו הפריסה שתוצג בקטע, או התנהגויות בזמן ההידור, כמו מצב הכיווץ שיחול על משאבי ה-XML. כשמבצעים build לאפליקציה, כלי ה-build מסירים את המאפיינים האלה כדי שלא תהיה להם השפעה על גודל ה-APK או על התנהגות זמן הריצה.
כדי להשתמש במאפיינים האלה, צריך להוסיף את מרחב השמות tools לרכיב הבסיס של כל קובץ XML שבו רוצים להשתמש בהם, כמו שמוצג כאן:
<RootTag xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" >
מאפיינים לטיפול בשגיאות
המאפיין הבא עוזר להסתיר הודעות אזהרה של Lint:
tools:targetApi
מיועד ל: כל רכיב
בשימוש על ידי: Lint
המאפיין הזה פועל כמו ההערה @TargetApi בקוד Java. אפשר לציין את רמת ה-API (כמספר שלם או כשם קוד) שתומכת ברכיב הזה.
ההגדרה הזו מציינת לכלים שהאלמנט הזה וכל אלמנט צאצא שלו משמשים רק ברמת ה-API שצוינה או ברמה גבוהה יותר. כך לא תקבלו אזהרה מ-lint אם הרכיב או המאפיינים שלו לא זמינים ברמת ה-API שציינתם כ-minSdkVersion.
לדוגמה, יכול להיות שתשתמשו במאפיין הזה כי GridLayout זמין רק ברמת API 14 ומעלה, אבל אתם יודעים שהפריסה הזו לא נמצאת בשימוש בקוד שלכם בגרסאות נמוכות יותר:
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:targetApi="14" >
(עם זאת, מומלץ להשתמש ב-GridLayout מספריית התמיכה).
מאפייני תצוגה בזמן העיצוב
המאפיינים הבאים מגדירים מאפייני פריסה שגלויים רק בתצוגה המקדימה של הפריסה ב-Android Studio.
tools: במקום android:
מיועד ל: <View>
בשימוש על ידי: כלי הפריסה של Android Studio
אפשר להוסיף נתוני דוגמה לתצוגה המקדימה של הפריסה באמצעות הקידומת tools: במקום android: עם כל מאפיין <View> מ-Android Framework.
זה שימושי כשערך המאפיין לא מאוכלס עד זמן הריצה ואתם רוצים לראות את ההשפעה בתצוגה המקדימה של הפריסה.
לדוגמה, אם ערך המאפיין android:text מוגדר בזמן הריצה, או שרוצים לראות את הפריסה עם ערך שונה מערך ברירת המחדל, אפשר להוסיף tools:text כדי לציין טקסט מסוים לתצוגה המקדימה של הפריסה בלבד.
tools:text
מגדיר את הערך 'Google Voice' לתצוגה המקדימה של הפריסה.אפשר להוסיף גם את מאפיין מרחב השמות android:, שמשמש בזמן ריצה, וגם את מאפיין ההתאמה tools:, שמבטל את מאפיין זמן הריצה בתצוגה המקדימה של הפריסה בלבד.
אפשר גם להשתמש במאפיין tools: כדי לבטל הגדרת מאפיין רק בתצוגה המקדימה של הפריסה. לדוגמה, אם יש לכם FrameLayout עם שני צאצאים, אבל אתם רוצים לראות רק צאצא אחד בתצוגה המקדימה של הפריסה, אתם יכולים להגדיר שאחד מהם יהיה בלתי נראה בתצוגה המקדימה של הפריסה, כמו שמוצג כאן:
<Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="First" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Second" tools:visibility="invisible" />
כשמשתמשים בLayout Editor בתצוגת עיצוב, חלון המאפיינים מאפשר לערוך חלק מהמאפיינים של התצוגה בזמן העיצוב. כל מאפיין של זמן עיצוב מסומן בסמל מפתח ברגים
לצד שם המאפיין, כדי להבדיל אותו מהמאפיין האמיתי עם אותו שם.
tools:context
מיועד ל: כל שורש <View>
בשימוש על ידי: Lint, Android Studio Layout Editor
במאפיין הזה מצהירים איזו פעילות משויכת לפריסה הזו כברירת מחדל. האפשרות הזו מאפשרת להשתמש בתכונות בעורך או בתצוגה המקדימה של הפריסה שדורשות מידע על הפעילות, כמו נושא הפריסה בתצוגה המקדימה והמקום שבו צריך להוסיף את רכיבי ה-handler של onClick שנוצרו מתיקון מהיר, כמו שמוצג באיור 2.
onClick פועל רק אם הגדרתם את tools:context.אפשר לציין את שם מחלקת הפעילות באמצעות אותה קידומת נקודה כמו בקובץ המניפסט (לא כולל שם החבילה המלא).
לדוגמה:
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity" >
tools:itemCount
מיועד ל: <RecyclerView>
משמש את: Android Studio Layout Editor
במאפיין הזה מציינים את מספר הפריטים ש-Layout Editor צריך לעבד בחלון תצוגה מקדימה של RecyclerView נתון.
לדוגמה:
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:itemCount="3"/>
tools:layout
מיועד ל: <fragment>
בשימוש על ידי: Layout Editor של Android Studio
במאפיין הזה מצהירים איזו פריסה רוצים שהתצוגה המקדימה של הפריסה תצייר בתוך ה-Fragment, כי התצוגה המקדימה של הפריסה לא יכולה להריץ את קוד הפעילות שבדרך כלל מחיל את הפריסה.
לדוגמה:
<fragment android:name="com.example.main.ItemListFragment"
tools:layout="@layout/list_content" />
tools:listitem, tools:listheader, tools:listfooter
מיועד ל: <AdapterView> (ולמחלקות משנה כמו <ListView>)
בשימוש על ידי: Layout Editor של Android Studio
במאפיינים האלה מציינים את הפריסה שתוצג בתצוגה המקדימה של הפריסה עבור הפריטים, הכותרת והכותרת התחתונה של רשימה. שדות הנתונים בפריסה מלאים בתוכן מספרי, כמו 'פריט 1', כדי שפריטי הרשימה לא יהיו חוזרים.
לדוגמה:
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:listitem="@layout/sample_list_item"
tools:listheader="@layout/sample_list_header"
tools:listfooter="@layout/sample_list_footer" />
tools:showIn
מיועד ל: כל רכיב <View> ברמה הבסיסית בפריסה שאליה מתייחס רכיב <include>
בשימוש על ידי: Layout Editor של Android Studio
המאפיין הזה מאפשר להפנות לפריסה שמשתמשת בפריסה הזו באמצעות <include>, כדי שתוכלו לצפות בתצוגה מקדימה של הקובץ הזה ולערוך אותו כפי שהוא מופיע כשהוא מוטמע בפריסת האם שלו.
לדוגמה:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:showIn="@layout/activity_main" />
עכשיו בתצוגה המקדימה של הפריסה מוצגת הפריסה TextView כפי שהיא מופיעה בתוך הפריסה activity_main.
tools:menu
מיועד ל: כל שורש <View>
בשימוש על ידי: Layout Editor של Android Studio
במאפיין הזה מציינים באיזה תפריט מוצגת תצוגה מקדימה של הפריסה בסרגל האפליקציות. הערך הוא מזהה תפריט אחד או יותר,
מופרדים בפסיקים, ללא @menu/ או קידומת מזהה כזו וללא
הסיומת .xml.
לדוגמה:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:menu="menu1,menu2" />
tools:minValue, tools:maxValue
מיועד ל: <NumberPicker>
בשימוש על ידי: Layout Editor של Android Studio
במאפיינים האלה מגדירים ערכים מינימליים ומקסימליים לתצוגה של NumberPicker.
לדוגמה:
<NumberPicker xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/numberPicker"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:minValue="0"
tools:maxValue="10" />
tools:openDrawer
מיועד ל: <DrawerLayout>
בשימוש על ידי: Layout Editor של Android Studio
המאפיין הזה מאפשר לפתוח DrawerLayout בתצוגה המקדימה.
אפשר גם לשנות את אופן העיבוד של הפריסה ב-Layout Editor על ידי העברת אחד מהערכים הבאים:
טבלה 1. ערכים לשינוי האופן שבו ה-Layout Editor מעבד את DrawerLayout
| קבוע | ערך | תיאור |
|---|---|---|
end | 800005 | העברת האובייקט לסוף הקונטיינר שלו, בלי לשנות את הגודל שלו. |
left | 3 | הזזת האובייקט לצד ימין של הקונטיינר בלי לשנות את הגודל שלו. |
right | 5 | הזזת האובייקט ימינה בתוך הגורם המכיל, בלי לשנות את הגודל שלו. |
start | 800003 | העברת האובייקט לתחילת הקונטיינר שלו, בלי לשנות את הגודל שלו. |
לדוגמה:
<androidx.drawerlayout.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:openDrawer="start" />
"@tools:sample/*" משאבים
מיועד ל: כל תצוגה שתומכת בטקסט או בתמונות של ממשק משתמש
משמש את: Android Studio Layout Editor
המאפיין הזה מאפשר להוסיף נתוני פלייסהולדר או תמונות פלייסהולדר לתצוגה. לדוגמה, כדי לבדוק איך הפריסה מתנהגת עם טקסט לפני שסיימתם את טקסט ממשק המשתמש של האפליקציה, אתם יכולים להשתמש בטקסט placeholder באופן הבא:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="@tools:sample/lorem" />
בטבלה הבאה מתוארים סוגי נתוני הפלייסהולדר שאפשר להוסיף לפריסות:
טבלה 2. נתוני Placeholder לפריסות
| ערך מאפיין | תיאור של נתוני placeholder |
|---|---|
@tools:sample/full_names |
שמות מלאים שנוצרו באופן אקראי משילוב של
@tools:sample/first_names ושל
@tools:sample/last_names |
@tools:sample/first_names |
שמות פרטיים נפוצים |
@tools:sample/last_names |
שמות משפחה נפוצים |
@tools:sample/cities |
שמות של ערים מרחבי העולם |
@tools:sample/us_zipcodes |
מספרי מיקוד בארה"ב שנוצרו באופן אקראי |
@tools:sample/us_phones |
מספרי טלפון שנוצרו באופן אקראי בפורמט הבא:
(800) 555-xxxx |
@tools:sample/lorem |
טקסט לדוגמה בלטינית |
@tools:sample/date/day_of_week |
תאריכים ושעות אקראיים בפורמט שצוין |
@tools:sample/date/ddmmyy | |
@tools:sample/date/mmddyy | |
@tools:sample/date/hhmm | |
@tools:sample/date/hhmmss | |
@tools:sample/avatars |
פריטים גרפיים וקטוריים שניתן לשרטוט שאפשר להשתמש בהם כדמויות פרופיל |
@tools:sample/backgrounds/scenic |
תמונות שאפשר להשתמש בהן כרקע |