Anpassung von zwei Fenstern

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Android 12 führt ein neues Design mit zwei Fenstern ein, mit einem statischen L0-Menü auf der linken Seite und einem Inhaltsbereich auf der rechten Seite. Diese Funktion führt viele neue Anpassungsoptionen ein. Dieser Artikel beschreibt diese Funktionen und erklärt, wie Sie Ihre eigenen Einstellungen anpassen können.

Zum Einzelfenster zurückkehren

Standardmäßig zeigt CarSettings jetzt die Doppelfensteransicht an, wenn das Anwendungsfenster größer oder gleich 1400 dp breit ist, andernfalls die Einzelfensteransicht. Um dies für ein bestimmtes Gerät anzupassen, verwenden Sie ein Runtime Resource Overlay (RRO), um auf die erforderlichen Konfigurationswerte abzuzielen:

Wert Beschreibung
config_global_force_single_pane Auf „ true “ setzen, wenn die gesamte Anwendung in einer Single-Pane-Konfiguration ausgeführt werden soll.
config_homepage_fragment_class Gibt das Startfragment für die Homepage an. Im Doppelfenster wird dies für das Anfangsfragment im Inhaltsfenster verwendet. Im Single-Pane-Modus sollte dies das Homepage-Fragment sein.

Header-Schlüssel

Da verschiedene CarSettings-Aktivitäten eine angepasste IA haben können, wird eine Header-Schlüsselzuordnung bereitgestellt, um Anpassungen zu vereinfachen. In AndroidManifest.xml ist in den Metadaten jeder Aktivität, die Dual Pane unterstützt, ein TOP_LEVEL_HEADER_KEY angegeben. Dieser Wert zeigt auf einen in res/values/header_keys.xml angegebenen Schlüssel, der dem Einstellungsschlüssel des Menüelements der obersten Ebene zugeordnet ist, unter das das Startfragment fällt. Wenn daher das Startfragment einer Aktivität geändert oder die IA neu angeordnet wird, sodass ein bestimmtes Fragment unter eine andere Präferenz der obersten Ebene fällt, können die relevanten Zuordnungen in der Datei header_keys.xml aktualisiert werden, um den korrekten Wert anzugeben .

Passen Sie das Aktivitätslayout an

Das Layout für BaseCarSettingsActivity befindet sich in res/layout/car_setting_activity und in diesen Abschnitten:

Wert Beschreibung
top_level_menu Menüfragment der obersten Ebene, das in Konfigurationen mit zwei Fenstern angezeigt wird. Die Breite dieses Abschnitts wird durch top_level_menu_width angegeben. Diese Ansicht wird von einem Chassis-Grundlayout (mit Symbolleiste) umschlossen.
top_level_divider Vertikale Linie, die die beiden Bereiche teilt und deren Breite Sie mit top_level_divider_width anpassen können.
fragment_container_wrapper Wrapper-Layout für das Inhaltsfenster (oder das Hauptfenster in einer Einzelfensterkonfiguration). Diese Ansicht wird von einem Chassis-Basislayout (mit Symbolleiste) umschlossen.
settings_focus_parking_view Benutzerdefinierte Implementierung von FocusParkingView , um den Rotationsfokus bei Bedarf zu halten.
fragment_container Hauptinhaltscontainer. Inhaltsfragmente verwenden dies als Ziellayout.
restricted_message UX-eingeschränkte Blockierungsansicht, die auf Instanzen von BaseFragment werden soll.

Abbildung 1. Layout mit zwei Fenstern

Einstellungen auf oberster Ebene

Einstellungen

Die Einstellungen der obersten Ebene sind benutzerdefinierte CarUiPreferences mit einem leicht modifizierten Layout, um die Einstellungshöhe und die Hintergrundform zu ändern. Es gibt viele verschiedene Möglichkeiten, das Aussehen dieser Einstellungen anzupassen:

Wert Beschreibung
res/layout/top_level_preference.xml Überlagern Sie das gesamte Einstellungslayout.
top_level_preference_min_height Minimale Höhe der Präferenz der obersten Ebene. Abhängig vom Inhalt (z. B. wenn ein Untertitel vorhanden ist) können die Einstellungen größer als dieser Wert sein.
top_level_preference_corner_radius Radius der Eckenrundung.
top_level_preference_background Hintergrund der Einstellungen der obersten Ebene, wenn nicht aktuell hervorgehoben.
top_level_preference_highlight Hintergrund der Einstellungen der obersten Ebene, wenn hervorgehoben.

Symbole

Abbildung 2 veranschaulicht, wie die Symbole der obersten Ebene nun aus einem Vektorsymbol innerhalb einer farbigen Hintergrundform bestehen. Diese Form ist derzeit so konfiguriert, dass sie entweder eine ovale oder eine rechteckige Form unterstützt. Standardmäßig ist die Form auf Oval eingestellt.

Um die Standardeinstellung zu ändern, ändern Sie den Wert in config_top_level_icon_shape (wobei 0 ein Rechteck und 1 ein Oval ist). Die Symbole werden erstellt, indem das Vordergrundsymbol um top_level_foreground_icon_inset von der Hintergrundform eingefügt wird. Jedes Symbol der obersten Ebene hat eine Vordergrundfarbe, die in res/values/colors.xml angegeben ist, und eine Hintergrundfarbe, die im Ordner res/color angegeben ist.

Um ein benutzerdefiniertes Erscheinungsbild zu erstellen, können Sie alle Farbwerte überschreiben.

Abbildung 2. Präferenzkomponenten der obersten Ebene

Symbole für eingefügte Einstellungen, die in die von config_top_level_injection_categories angegebenen Kategorien fallen, werden ebenfalls als Symbole der obersten Ebene behandelt. Die bereitgestellten Symbole werden um denselben Wert und in derselben Form wie für alle anderen Symbole der obersten Ebene festgelegt (siehe oben). Der Hintergrund wird jedoch bestimmt, indem die folgenden Attribute in dieser Reihenfolge betrachtet werden:

  1. com.android.settings.bg.argb Metadaten der injizierenden Anwendung.
  2. com.android.settings.bg.hint Metadaten der injizierenden Anwendung.
  3. top_level_injected_default_background Angegeben in res/values/colors.xml .

Um die injizierenden Anwendungsdaten zu ignorieren und immer den Standardhintergrund zu verwenden, setzen config_top_level_injection_background_always_use_default auf true .