מסמך עזר בנושא מאפייני כלים (תצוגות)

מושגים והטמעה ב-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 כערך לתצוגה מקדימה של הפריסה
איור 1. המאפיין 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
איור 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

קבועערךתיאור
end800005העברת האובייקט לסוף הקונטיינר שלו, בלי לשנות את הגודל שלו.
left3הזזת האובייקט לצד ימין של הקונטיינר בלי לשנות את הגודל שלו.
right5הזזת האובייקט ימינה בתוך הגורם המכיל, בלי לשנות את הגודל שלו.
start800003העברת האובייקט לתחילת הקונטיינר שלו, בלי לשנות את הגודל שלו.

לדוגמה:

<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 תמונות שאפשר להשתמש בהן כרקע