از 27 مارس 2025، توصیه می کنیم از android-latest-release
به جای aosp-main
برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
سفارشی سازی دو جداره
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
اندروید 12 یک طراحی دو قاب با منوی L0 استاتیک در سمت چپ و یک صفحه محتوا در سمت راست معرفی میکند. این ویژگی بسیاری از گزینه های سفارشی سازی جدید را معرفی می کند. این صفحه جزئیات این ویژگی ها را توضیح می دهد و توضیح می دهد که چگونه می توانید تنظیمات برگزیده خود را سفارشی کنید.
به تک پنجره برگردید
بهطور پیشفرض، CarSettings اکنون نمای دوتایی را هنگامی که عرض پنجره برنامه بزرگتر یا برابر با 1400dp باشد و در غیر این صورت نمای تک صفحه را نمایش میدهد. برای سفارشی کردن این مورد برای یک دستگاه خاص، از یک پوشش منبع زمان اجرا (RRO) برای هدف قرار دادن مقادیر پیکربندی لازم استفاده کنید:
ارزش | توضیحات | config_global_force_single_pane | اگر قرار است کل برنامه در پیکربندی تک صفحه اجرا شود، روی true تنظیم کنید. |
config_homepage_fragment_class | قطعه شروع را برای صفحه اصلی مشخص می کند. در پنجره دوگانه، این برای قطعه اولیه در صفحه محتوا استفاده می شود. در تک صفحه، این باید قطعه صفحه اصلی باشد. |
از آنجایی که فعالیتهای CarSettings مختلف میتوانند یک IA سفارشیسازی شده داشته باشند، نقشهبرداری کلید سرصفحه برای سادهسازی سفارشیسازی ارائه شده است. در AndroidManifest.xml
، هر فعالیتی که از پنجره دوگانه پشتیبانی میکند، دارای یک TOP_LEVEL_HEADER_KEY
است که در فراداده آن مشخص شده است. این مقدار به یک کلید مشخص شده در res/values/header_keys.xml
اشاره میکند که به کلید ترجیحی آیتم منوی سطح بالایی که قطعه شروع تحت آن قرار میگیرد نگاشت میشود. بنابراین، اگر قطعه شروع یک اکتیویتی تغییر کند یا IA به گونهای بازآرایی شود که یک قطعه خاص تحت یک اولویت سطح بالای متفاوت قرار گیرد، نگاشت(های) مربوطه در فایل header_keys.xml
میتواند برای تعیین مقدار صحیح بهروزرسانی شود.
سفارشی کردن طرح فعالیت
طرح بندی BaseCarSettingsActivity
در res/layout/car_setting_activity
و در این بخش ها قرار دارد:
ارزش | توضیحات | top_level_menu | بخش منوی سطح بالا در پیکربندیهای پنجره دوگانه نشان داده شده است. عرض این بخش توسط top_level_menu_width مشخص می شود. یک طرح پایه شاسی (با نوار ابزار) در اطراف این نما پیچیده شده است. |
top_level_divider | خط عمودی که دو صفحه را از هم جدا می کند و می توانید عرض آن را با top_level_divider_width شخصی سازی کنید. |
fragment_container_wrapper | طرح بندی پوشش برای صفحه محتوا (یا صفحه اصلی در پیکربندی تک صفحه). یک طرح پایه شاسی (با نوار ابزار) در اطراف این نما پیچیده شده است. |
settings_focus_parking_view | پیاده سازی سفارشی FocusParkingView برای حفظ فوکوس چرخشی در صورت نیاز. |
fragment_container | ظرف محتوای اصلی قطعات محتوا از این به عنوان طرح هدف استفاده می کنند. |
restricted_message | نمای مسدود شده با محدودیت UX برای نمایش در نمونه های BaseFragment . |

شکل 1. طرح بندی دو جداره
ترجیحات سطح بالا
اولویتهای سطح بالا CarUiPreferences سفارشی با طرحبندی کمی تغییر یافته برای تغییر ارتفاع ترجیحی و شکل پسزمینه هستند. راه های مختلفی برای سفارشی کردن ظاهر این تنظیمات برگزیده وجود دارد:
ارزش | توضیحات | res/layout/top_level_preference.xml | کل طرح بندی ترجیحی را همپوشانی کنید. |
top_level_preference_min_height | حداقل ارتفاع اولویت سطح بالا. بسته به محتوا (به عنوان مثال، یک زیرنویس وجود دارد)، ترجیحات ممکن است بلندتر از این مقدار باشد. |
top_level_preference_corner_radius | شعاع گرد شدن گوشه. |
top_level_preference_background | پسزمینه اولویتهای سطح بالا زمانی که در حال حاضر برجسته نشدهاند. |
top_level_preference_highlight | پسزمینه اولویتهای سطح بالا وقتی برجسته میشود. |
نمادهای سطح بالا
شکل 2 نشان می دهد که چگونه نمادهای سطح بالا اکنون از یک نماد برداری در یک شکل پس زمینه رنگی تشکیل شده اند. این شکل در حال حاضر برای پشتیبانی از یک شکل بیضی یا مستطیل پیکربندی شده است. به طور پیش فرض، شکل روی بیضی تنظیم شده است.
برای تغییر پیش فرض، مقدار config_top_level_icon_shape
را تغییر دهید (که 0 مستطیل و 1 بیضی است). آیکون ها با قرار دادن نماد پیش زمینه توسط top_level_foreground_icon_inset
از شکل پس زمینه ایجاد می شوند. هر نماد سطح بالا دارای یک رنگ پیش زمینه مشخص شده در res/values/colors.xml
و یک رنگ پس زمینه مشخص شده در پوشه res/color
است.
برای ایجاد یک ظاهر سفارشی، می توانید تمام مقادیر رنگ را لغو کنید.

شکل 2. اجزای ترجیحی سطح بالا
نمادهایی برای تنظیمات برگزیده تزریق شده که در دسته بندی های مشخص شده توسط config_top_level_injection_categories
قرار می گیرند نیز به عنوان نمادهای سطح بالا در نظر گرفته می شوند. نمادهای ارائه شده با همان مقدار و به همان شکلی که برای سایر نمادهای سطح بالا مشخص شده است قرار می گیرند (به بالا مراجعه کنید). با این حال، پس زمینه با نگاه کردن به ویژگی های زیر به ترتیب تعیین می شود:
-
com.android.settings.bg.argb
داده های متا از برنامه تزریق. -
com.android.settings.bg.hint
داده های متا از برنامه تزریق. -
top_level_injected_default_background
در res/values/colors.xml
مشخص شده است.
برای نادیده گرفتن داده های برنامه تزریق و همیشه استفاده از پس زمینه پیش فرض، config_top_level_injection_background_always_use_default
را روی true
تنظیم کنید.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","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-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Dual pane customization\n\nAndroid 12 introduces a *dual pane* design, with a static L0 menu on the left and\na content pane on the right. This feature introduces many new customization options. This page\ndetails those features and explains how you can customize your own preferences.\n\nRevert to single pane\n---------------------\n\nBy default, CarSettings now displays the dual pane view when the app window is\ngreater than or equal to 1400dp in width and the single pane view otherwise. To customize\nthis for a specific device, use a runtime resource overlay (RRO) to target the necessary\nconfiguration values:\n\n| Value | Description |\n|-----------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `config_global_force_single_pane` | Set to `true` if the entire app is to run in single-pane configuration. |\n| `config_homepage_fragment_class` | Specifies the starting fragment for the homepage. In dual pane, this is used for the initial fragment in the content pane. In single-pane, this should be the homepage fragment. |\n\nHeader keys\n-----------\n\nBecause different CarSettings activities can have a customized IA, a header key mapping\nis provided to simplify customizations. In `AndroidManifest.xml`, every activity\nthat supports dual pane has a `TOP_LEVEL_HEADER_KEY` specified in its metadata.\nThis value points to a key specified in `res/values/header_keys.xml`, which is\nmapped to the preference key of the top-level menu item that the starting fragment falls under.\nTherefore, if the starting fragment of an activity is changed or the IA is rearranged such\nthat a particular fragment falls under a different top-level preference, the relevant mapping(s)\nin the `header_keys.xml` file can be updated to specify the correct value.\n\nCustomize activity layout\n-------------------------\n\nThe layout for `BaseCarSettingsActivity` is located in\n`res/layout/car_setting_activity` and in these sections:\n\n| Value | Description |\n|-------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `top_level_menu` | Top-level menu fragment shown in dual pane configurations. Width of this section is specified by `top_level_menu_width`. A chassis base layout (with toolbar) is wrapped around this view. |\n| `top_level_divider` | Vertical line that splits the two panes and whose width you can customize with `top_level_divider_width`. |\n| `fragment_container_wrapper` | Wrapper layout for the content pane (or the main pane in a singlepane configuration). A chassis baselayout (with toolbar) is wrapped around this view. |\n| `settings_focus_parking_view` | Custom implementation of `FocusParkingView` to hold rotary focus when needed. |\n| `fragment_container` | Main content container. Content fragments use this as the target layout. |\n| `restricted_message` | UX-restricted blocking view to be shown on instances of `BaseFragment`. |\n\n**Figure 1.** Dual pane layout\n\nTop-level preferences\n---------------------\n\nTop-level preferences are custom CarUiPreferences with a slightly modified layout to change\nthe preference height and background shape. There are many different ways to customize the look\nof these preferences:\n\n| Value | Description |\n|---------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------|\n| `res/layout/top_level_preference.xml` | Overlay the *entire* preference layout. |\n| `top_level_preference_min_height` | Minimum height of the top-level preference. Depending on content (for example, a subtitle is present), preferences may be taller than this value. |\n| `top_level_preference_corner_radius` | Radius of the corner rounding. |\n| `top_level_preference_background` | Background of the top-level preferences when not currently highlighted. |\n| `top_level_preference_highlight` | Background of top-level preferences when highlighted. |\n\nTop-level icons\n---------------\n\nFigure 2 illustrates how the top-level icons now consist of a vector icon inside a colored\nbackground shape. This shape is currently configured to support either an oval a rectangular\nshape. By default, shape is set to oval.\n\nTo change the default, modify the value in `config_top_level_icon_shape`\n(where 0 is rectangle and 1 is oval). The icons are created by insetting the foreground icon by\n`top_level_foreground_icon_inset` from the background shape. Each top-level icon has\na foreground color specified in `res/values/colors.xml` and a background color\nspecified in the `res/color` folder.\n\nTo create a customized appearance, you can override all color values.\n\n**Figure 2.** Top-level preference components\n\nIcons for injected preferences that fall into the categories specified by\n`config_top_level_injection_categories` are also treated as top-level icons.\nThe provided icons are inset by the same value and into the same shape as specified for\nall other top-level icons (see above). However, the background is determined by looking\nat the following attributes in this order:\n\n1. `com.android.settings.bg.argb` Meta data from the injecting app.\n2. `com.android.settings.bg.hint` Meta data from the injecting app.\n3. `top_level_injected_default_background` Specified in `res/values/colors.xml`.\n\nTo ignore the injecting app data and always use the default background, set\n`config_top_level_injection_background_always_use_default` to `true`."]]