Dostosowanie panelu 2 paneli

Android 12 wprowadza 2 panele: menu L0 po lewej stronie i panel treści po prawej. Ta funkcja wprowadza wiele nowych opcji personalizacji. Na tej stronie znajdziesz szczegółowe informacje o tych funkcjach oraz instrukcje dostosowywania własnych ustawień.

Powrót do pojedynczego panelu

Domyślnie CarSettings wyświetla teraz widok panelu podwójnego, gdy okno aplikacji jest większe lub równe 1400 dp. W przeciwnym razie widok pojedynczego panelu. Aby dostosować tę funkcję do konkretnego urządzenia, użyj nakładki zasobów w czasie wykonywania (RRO) w celu ukierunkowania na niezbędne wartości konfiguracji:

Wartość Opis
config_global_force_single_pane Ustaw na true, jeśli aplikacja ma działać w konfiguracji z jednym panelem.
config_homepage_fragment_class Określa fragment początkowy strony głównej. W trybie dwupanelowym służy do wyświetlania początkowego fragmentu w panelu treści. W pojedynczym panelu powinien to być fragment strony głównej.

Klucze nagłówka

Różne aktywności CarSettings mogą mieć niestandardowe interfejsy AI, dlatego udostępniamy mapowanie kluczy nagłówka, aby ułatwić dostosowywanie. W AndroidManifest.xml każde działanie, które obsługuje panel podwójny, ma w metadanych określony element TOP_LEVEL_HEADER_KEY. Ta wartość wskazuje klucz określony w sekcji res/values/header_keys.xml, który jest mapowany na klucz preferencji elementu menu najwyższego poziomu, do którego należy fragment początkowy. Jeśli więc zmienisz początkowy fragment aktywności lub przearanżujesz interfejs AI tak, że dany fragment będzie podlegał innej preferencji najwyższego poziomu, możesz zaktualizować odpowiednie mapowania w pliku header_keys.xml, aby podać prawidłową wartość.

Dostosowywanie układu aktywności

Układ BaseCarSettingsActivity znajduje się w sekcji res/layout/car_setting_activity oraz w tych sekcjach:

Wartość Opis
top_level_menu Fragment menu najwyższego poziomu w konfiguracji z dwoma panelami. Szerokość tej sekcji jest określana przez top_level_menu_width. Widok ten jest otoczony układem podstawy podwozia (z paskiem narzędzi).
top_level_divider Pionowa linia, która dzieli 2 panele i której szerokość możesz dostosować za pomocą top_level_divider_width.
fragment_container_wrapper Układ oprawy dla panelu treści (lub panelu głównego w konfiguracji z jednym panelem). Widok ten jest otoczony przez podłoże podwozia (z paskiem narzędzi).
settings_focus_parking_view Niestandardowe wdrożenie FocusParkingView w celu utrzymania w potrzebnych przypadkach fokusu na pokrętle.
fragment_container Główny kontener treści. Fragmenty treści używają tego jako docelowego układu.
restricted_message Widok blokowania z ograniczonymi możliwościami wyświetlania interfejsu użytkownika, który ma być pokazywany w przypadku instancji BaseFragment.

Rysunek 1. Układ z dwoma panelami

Ustawienia najwyższego poziomu

Ustawienia najwyższego poziomu to niestandardowe CarUiPreferences z nieco zmodyfikowanym układem, aby zmienić wysokość ustawień i kształt tła. Wygląd tych ustawień można dostosowywać na wiele sposobów:

Wartość Opis
res/layout/top_level_preference.xml Nakładać się na cały układ preferencji.
top_level_preference_min_height Minimalna wysokość preferencji najwyższego poziomu. W zależności od treści (np. obecności napisów) ustawienia mogą być wyższe niż ta wartość.
top_level_preference_corner_radius Promień zaokrąglenia narożnika.
top_level_preference_background Tło preferencji najwyższego poziomu, gdy nie są obecnie wyróżnione.
top_level_preference_highlight Tło preferencji najwyższego poziomu po ich wyróżnieniu

Ikony najwyższego poziomu

Na rysunku 2 widać, że ikony najwyższego poziomu składają się teraz z ikony wektorowej w kolorze tła. Ten kształt jest obecnie skonfigurowany tak, aby obsługiwać kształt owalny lub prostokątny. Domyślnie kształt jest ustawiony na owalny.

Aby zmienić wartość domyślną, zmodyfikuj wartość w polu config_top_level_icon_shape (gdzie 0 to prostokąt, a 1 owalny). Ikony są tworzone przez wstawienie ikony na pierwszym planie do kształtu tła o wartościtop_level_foreground_icon_inset. Każda ikona najwyższego poziomu ma kolor pierwszego planu określony w folderze res/values/colors.xml oraz kolor tła określony w folderze res/color.

Aby utworzyć niestandardowy wygląd, możesz zastąpić wszystkie wartości kolorów.

Rysunek 2. Komponenty ustawień najwyższego poziomu

Ikony wstawionych preferencji, które należą do kategorii określonych przez atrybut config_top_level_injection_categories, są też traktowane jako ikony najwyższego poziomu. Dostarczone ikony są wstawiane w tym samym kształcie i z tą samą wartością co wszystkie inne ikony najwyższego poziomu (patrz wyżej). Tło jest jednak określane na podstawie tych atrybutów w tej kolejności:

  1. com.android.settings.bg.argb Metadane z aplikacji, z której pochodzą dane.
  2. com.android.settings.bg.hint Metadane z aplikacji, z której pochodzą dane.
  3. top_level_injected_default_background Określony w res/values/colors.xml.

Aby zignorować dane aplikacji do wstrzykiwania i zawsze używać domyślnego tła, ustaw config_top_level_injection_background_always_use_default na true.