المفاهيم وتنفيذ Jetpack Compose
يتيح استوديو Android مجموعة متنوعة من سمات تنسيق XML في مساحة الاسم tools التي تتيح ميزات وقت التصميم، مثل التصميم الذي يجب عرضه في جزء، أو سلوكيات وقت التجميع، مثل وضع التقليص الذي يجب تطبيقه على موارد تنسيق XML. عند إنشاء تطبيقك، تزيل أدوات الإنشاء هذه السمات حتى لا يكون هناك أي تأثير على حجم حزمة 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. ويتيح لك تحديد مستوى واجهة برمجة التطبيقات (إما كعدد صحيح أو كاسم رمزي)
الذي يتوافق مع هذا العنصر.
يخبر هذا الأدوات أنك تعتقد أن هذا العنصر وأي عناصر فرعية يتم استخدامها فقط على مستوى واجهة برمجة التطبيقات المحدد أو أعلى. يؤدي ذلك إلى منع lint من تحذيرك إذا لم يكن هذا العنصر أو سماته متوفّرة في مستوى واجهة برمجة التطبيقات الذي تحدّده على أنّه minSdkVersion.
على سبيل المثال، يمكنك استخدام هذه السمة لأنّ GridLayout لا يتوفّر إلا في المستوى 14 من واجهة برمجة التطبيقات والإصدارات الأحدث، ولكنّك تعلم أنّ هذا التنسيق لا يُستخدم في الرمز البرمجي لأي إصدارات أقدم:
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:targetApi="14" >
(ومع ذلك، يُرجى العِلم أنّنا ننصحك باستخدام GridLayout
من مكتبة الدعم بدلاً من ذلك).
سمات العرض في وقت التصميم
تحدّد السمات التالية خصائص التنسيق التي تظهر فقط في معاينة تنسيق "استوديو Android".
tools: بدلاً من android:
مخصّص لـ: <View>
يستخدمه: محرِّر تنسيق "استوديو Android"
يمكنك إدراج عيّنات بيانات في معاينة التنسيق باستخدام البادئة tools:
بدلاً من android: مع أي سمة <View> من إطار عمل Android.
ويكون ذلك مفيدًا عندما لا تتم تعبئة قيمة السمة حتى وقت التشغيل وتريد الاطّلاع على التأثير في معاينة التنسيق.
على سبيل المثال، إذا تم ضبط قيمة السمة 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" />
عند استخدام محرر التخطيط في
عرض التصميم، تتيح لك نافذة الخصائص تعديل بعض سمات
عرض وقت التصميم. تتم الإشارة إلى كل سمة وقت التصميم برمز مفتاح ربط
بجانب اسم السمة لتمييزها عن السمة الحقيقية التي تحمل الاسم نفسه.
tools:context
الجمهور المستهدف: أي مستخدم جذر <View>
يتم استخدامها من قِبل: Lint ومحرِّر تنسيق "استوديو Android"
تحدّد هذه السمة النشاط المرتبط بهذا التنسيق تلقائيًا. يتيح ذلك تفعيل الميزات في المحرِّر أو معاينة التنسيق التي تتطلّب
معرفة النشاط، مثل مظهر التنسيق في
المعاينة ومكان إدراج معالِجات 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"
بالنسبة إلى 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>
يستخدمه: "محرِّر تنسيق استوديو Android"
تحدّد هذه السمة التنسيق الذي تريد أن ترسمه معاينة التنسيق داخل الجزء لأنّ معاينة التنسيق لا يمكنها تنفيذ رمز النشاط الذي يطبّق التنسيق عادةً.
على سبيل المثال:
<fragment android:name="com.example.main.ItemListFragment"
tools:layout="@layout/list_content" />
tools:listitem وtools:listheader وtools:listfooter
مخصّص لـ: <AdapterView> (والفئات الفرعية مثل <ListView>)
يستخدمه: "محرِّر تنسيق استوديو Android"
تحدّد هذه السمات التنسيق الذي سيظهر في معاينة التنسيق لعناصر القائمة والعنوان والتذييل. يتم ملء أي حقول بيانات في التخطيط بمحتويات رقمية، مثل "العنصر 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>
يستخدمه: "محرِّر تنسيق استوديو Android"
تتيح لك هذه السمة الإشارة إلى تصميم يستخدم هذا التصميم باستخدام
<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>
يستخدمه: "محرِّر تنسيق استوديو Android"
تحدّد هذه السمة القائمة التي تظهر فيها معاينة التنسيق في
شريط التطبيقات. القيمة هي معرّف قائمة واحد أو أكثر،
مفصولة بفواصل، بدون @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>
يستخدمه: "محرِّر تنسيق استوديو Android"
تحدّد هاتان السمتان القيمتَين الدنيا والقصوى لطريقة عرض 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>
يستخدمه: "محرِّر تنسيق استوديو Android"
تتيح لك هذه السمة فتح DrawerLayout في المعاينة.
يمكنك أيضًا تعديل طريقة عرض "محرِّر التنسيق" للتنسيق من خلال تمرير إحدى القيم التالية:
الجدول 1: القيم لتعديل كيفية عرض
"محرر التنسيق" لـ 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"
تتيح لك هذه السمة إدخال بيانات أو صور مؤقتة في العرض. على سبيل المثال، لاختبار سلوك التخطيط مع النص قبل الانتهاء من نص واجهة المستخدم لتطبيقك، يمكنك استخدام نص مؤقت على النحو التالي:
<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: بيانات العنصر النائب للتخطيطات
| قيمة السمة | وصف بيانات العنصر النائب |
|---|---|
@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 |
صور يمكنك استخدامها كخلفيات |