اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release
بدلاً من aosp-main
لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
الأنماط والمكونات
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
في Android 8.0، تحصل قائمة "الإعدادات" على العديد من المكوّنات والتطبيقات المصغّرة التي تغطي الاستخدامات الشائعة. ننصح المصنّعين والمطوّرين باستخدام المكوّنات
المشترَكة عند توسيع نطاق تطبيق "الإعدادات" حتى تظل واجهات المستخدم الجديدة
متسقة مع واجهة المستخدم الحالية في "الإعدادات".
في ما يلي ملخّص للتحسينات:
- تغيير سلوك المقسم في إطار عمل الإعدادات المفضّلة في مكتبة الدعم يتم الآن رسم المقسم بين الفئات.
- تغيير مظهر شريط الإجراءات يستخدم شريط الإجراءات الآن مظهرًا ألوانه فاتحة، مع
نص بلون مميّز.
- تنسيق جديد للإعدادات المفضّلة تظل مساحة الرموز ظاهرة حتى إذا لم يكن لدى الإعداد المفضّل
رمز.
التطبيقات المصغّرة الجديدة:
- تطبيق مصغّر لعرض عنوان تفاصيل التطبيق تعرِض هذه البطاقة رمز التطبيق وتصنيف التطبيق وغيرها من المعلومات.
- زر توسيع في بعض الصفحات يمكن أن تبدأ الصفحة مصغّرة وتُخفي العناصر الأقل
أهمية إلى أن ينقر المستخدم على زر التوسيع.
- واجهة مستخدم أداة اختيار التطبيقات التلقائية:
- واجهة المستخدم لاختيار المتصفّح التلقائي وتطبيق الهاتف التلقائي وما إلى ذلك
- كان هذا القسم في السابق مربّع حوار، ولكنه الآن واجهة مستخدم مستندة إلى زرّ اختيار في وضع ملء الشاشة.
- إعدادات مفضّلة لأسلوب "MasterSwitch" هذا هو الإعداد المفضّل الذي يتضمّن هدفَين للنقرات. يؤدي الاستهداف الأيمن إلى جزء أو نية من مجموعة فرعية. الهدف الأيمن هو
مفتاح تبديل للتحكّم في تفعيل/إيقاف الصفحة بأكملها.
الأمثلة والمصدر
- سلوك الفواصل
- تم تعديل جميع الصفحات في "الإعدادات" لاستخدام سلوك المقسم الجديد.
- يتم تحديد سلوك المقسم على أنّه ThemeOverlay في:
packages/apps/Settings/res/values/styles_preference.xml
- تغيير مظهر شريط الإجراءات
- تم تعديل جميع الصفحات في "الإعدادات" لاستخدام مظهر شريط الإجراءات الجديد.
- يتم تحديد المظهر في Theme.DeviceDefault.Settings
- تنسيق الإعدادات المفضّلة الجديد
- تستخدم الآن العديد من الصفحات في "الإعدادات" تنسيق الإعدادات المفضّلة الجديد.
- يمكنك العثور على الرمز في:
packages/apps/Settings/res/values/styles_preference.xml
- التطبيق المصغّر لعنوان التطبيق
- إنّ معظم صفحات معلومات التطبيقات في "الإعدادات" تستخدم حاليًا
عنوان التطبيق الجديد.
- يمكن العثور على الأمثلة والرموز على الرابطَين التاليَين:
packages/apps/Settings/src/com/android/settings/applications/AppHeaderController.java
- زر التوسيع
- أداة اختيار التطبيقات التلقائية
- يمكنك العثور على رمز الفئة الأساسية في:
packages/apps/Settings/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java
- هناك عدة فئات فرعية من DefaultAppPickerFragment، ينفِّذ كلّ منها
أداة اختيار لغرض مختلف.
- الخيار المفضّل لنمط MasterSwitch
- يمكنك العثور على الرمز على الرابط التالي:
https://cs.android.com/android/platform/superproject/+/main:packages/apps/Settings/src/com/android/settings/wifi/WifiPrimarySwitchPreferenceController.java
- ومن الأمثلة على حالات الاستخدام مفتاح Wi-Fi الأساسي. يمكنك العثور على مثال على الرابط التالي:
packages/apps/Settings/src/com/android/settings/wifi/WifiMasterSwitchPreferenceController.java
التنفيذ
يمكن لصنّاع الأجهزة البدء في استخدام جميع المكوّنات الجديدة مباشرةً.
إذا قرّرت الشركات المصنّعة للأجهزة الأصلية تنفيذ إعدادات مفضّلة جديدة لأسلوب "مفتاح التبديل الرئيسي" أو أداة اختيار التطبيقات التلقائية، عليها اتّباع الأمثلة الواردة في هذا المستند والملفات المرجعية
(Javadoc) المكتوبة مع كل مكوّن للحصول على مزيد من التفاصيل.
تخصيص قائمة الإعدادات
- سلوك المُقسِم لتغيير طريقة رسم المقسم، عدِّل نمط فواصل الإعدادات
وغيِّر القيمة لأحد العنصرَين التاليَين:
allowDividerAbove
allowDividerBelow
allowDividerAfterLastItem
- لون مظهر شريط الإجراءات يجب أن تستخدِم الأنشطة
Theme.DeviceDefault.Settings
كموضوع لها، أو
أن تنشئ موضوعًا مخصّصًا باستخدام Theme.DeviceDefault.Settings
كموضوع رئيسي.
- التطبيق المصغّر لعنوان التطبيق استخدِم أدوات الضبط في AppHeaderController لتخصيص كل حقل واستدعاء
build()
بعد ضبط جميع الحقول.
- زر التوسيع:
- لإيقاف الوظيفة بالكامل، يمكنك إلغاء المُنشئ لسمة
ProgressiveDisclosureMixin وضبط keepExpanded على true.
- لتخصيص عدد العناصر التي سيتم عرضها في البداية، استخدِم الطريقة
ProgressiveDisclosureMixin.setTileLimit()
أثناء تنفيذ الطريقة
onAttach(Context)
في المقتطف.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Patterns and components\n\nIn Android 8.0, the Settings menu gains several components and widgets that\ncover common uses. Device manufacturers and developers are encouraged to use the\ncommon components when extending the Settings app so new user interfaces stay\nconsistent with the existing Settings UI.\n\n\nHere is a summary of improvements:\n\n- Divider behavior change in support library Preference framework. Divider is now drawn between categories.\n- ActionBar theme change. The ActionBar now uses light color theme, with accent color text.\n- New preference layout. The space for icons remains even when a preference has no icon.\n\n\nNew widgets:\n\n- A header widget for app details. Displays app icon, app label and other information.\n- An expand button on some pages. Page can start as collapsed and hide less important items until user clicks expand button.\n- Default app picker UI:\n - The UI for choosing default browser, default phone app, etc.\n - Formerly a dialog, now it's a full screen radio button-based UI.\n- A \"MasterSwitch\" style preference. This is a preference with two click targets. Left target leads to a subsetting fragment or intent. Right target is a switch toggle, controlling on/off for the entire page.\n\nExamples and source\n-------------------\n\n- Divider behavior\n - All pages in Settings are modified to use the new divider behavior.\n - The divider behavior is defined as a ThemeOverlay in: \n `packages/apps/Settings/res/values/styles_preference.xml`\n- ActionBar theme change\n - All pages in Settings are modified to use the new ActionBar theme.\n - The theme is defined in Theme.DeviceDefault.Settings\n- New preference layout\n - Many pages in Settings are now using the new preference layout.\n - You can find the code in: \n `packages/apps/Settings/res/values/styles_preference.xml`\n- App header widget\n - Most app information pages in Settings are already implementing the new App header.\n - Examples and code can be found at: \n `packages/apps/Settings/src/com/android/settings/applications/AppHeaderController.java`\n- Expand button\n - Examples and code can be found at: \n `packages/apps/Settings/src/com/android/settings/dashboard/ProgressiveDisclosureMixin.java`\n\n **Note:** This component must be used together with\n DashboardFragment. (See more details about DashboardFragment in [Updated Information Architecture](/docs/core/settings/info-architecture).)\n- Default app picker\n - You can find the code for base class in: \n `packages/apps/Settings/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java`\n - There are several subclasses of DefaultAppPickerFragment, each implementing a picker for different intent.\n- *MasterSwitch* style preference\n - Code is at: `https://cs.android.com/android/platform/superproject/+/main:packages/apps/Settings/src/com/android/settings/wifi/WifiPrimarySwitchPreferenceController.java`\n - An example use case is Wi-Fi primary switch. You can find an example at: `packages/apps/Settings/src/com/android/settings/wifi/WifiMasterSwitchPreferenceController.java`\n\nImplementation\n--------------\n\n\nDevice manufacturers can start using all of the new components out of the box.\nIf OEMs decide to implement a new \"MasterSwitch\" style preference or default app\npicker, they should follow the examples in this document and the reference files\n(Javadoc) written with each component for more details.\n\nCustomize the settings menu\n---------------------------\n\n- Divider behavior. To change how divider is drawn, update the style for Settings dividers and change the value for the following:\n - `allowDividerAbove`\n - `allowDividerBelow`\n - `allowDividerAfterLastItem`\n- ActionBar theme color. Activities should use `Theme.DeviceDefault.Settings` as their theme, or create a custom theme using `Theme.DeviceDefault.Settings` as parent.\n- App header widget. Use setters in AppHeaderController to customize each field and call `build()` once all fields are set.\n- Expand button:\n - To fully disable the functionality, override the constructor for ProgressiveDisclosureMixin and set keepExpanded to true.\n - To customize how many items to show initially, call the `ProgressiveDisclosureMixin.setTileLimit()` method during fragment's `onAttach(Context)` method."]]