Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Personalización de doble panel

Android 12 introduce un nuevo diseño de doble panel, con un menú L0 estática en la izquierda y un panel de contenido a la derecha. Esta función presenta muchas opciones de personalización nuevas. Este artículo detalla esas funciones y explica cómo puede personalizar sus propias preferencias.

Volver a panel único

De forma predeterminada, CarSettings ahora muestra la vista de panel doble cuando la ventana de la aplicación es mayor o igual a 1400dp de ancho y la vista de panel único en caso contrario. Para personalizar esto para un dispositivo específico, use una superposición de recursos en tiempo de ejecución (RRO) para apuntar a los valores de configuración necesarios:

Valor Descripción
config_global_force_single_pane Se establece en true si toda la aplicación se va a ejecutar en la configuración de un solo panel.
config_homepage_fragment_class Especifica el fragmento inicial de la página de inicio. En el panel dual, esto se usa para el fragmento inicial en el panel de contenido. En un solo panel, este debería ser el fragmento de la página de inicio.

Claves de encabezado

Debido a que las diferentes actividades de CarSettings pueden tener un IA personalizado, se proporciona una asignación de teclas de encabezado para simplificar las personalizaciones. En AndroidManifest.xml , todas las actividades que soporta doble panel tiene una TOP_LEVEL_HEADER_KEY se especifica en sus metadatos. Este valor apunta a una clave especificada en res/values/header_keys.xml , que se asigna a la clave de preferencia del elemento de menú de nivel superior que el fragmento de partida cae bajo. Por lo tanto, si el fragmento a partir de una actividad se cambia o la IA se reordena de tal manera que un fragmento particular, cae bajo una preferencia de nivel superior diferente, la asignación correspondiente (s) en el header_keys.xml archivo puede ser actualizado para especificar el valor correcto .

Personalizar el diseño de la actividad

La disposición de BaseCarSettingsActivity se encuentra en res/layout/car_setting_activity y en estas secciones:

Valor Descripción
top_level_menu Fragmento de menú de nivel superior mostrado en configuraciones de doble panel. Ancho de esta sección se especifica por top_level_menu_width . Un diseño de la base del chasis (con barra de herramientas) se envuelve alrededor de esta vista.
top_level_divider Línea vertical que divide los dos paneles y cuya anchura se pueden personalizar con top_level_divider_width .
fragment_container_wrapper Diseño de envoltura para el panel de contenido (o el panel principal en una configuración de panel único). Un diseño de base del chasis (con barra de herramientas) se envuelve alrededor de esta vista.
settings_focus_parking_view Implementación personalizada de FocusParkingView para mantener el foco de rotación cuando sea necesario.
fragment_container Contenedor de contenido principal. Los fragmentos de contenido lo utilizan como diseño de destino.
restricted_message Vista de bloqueo restringido-UX que deberá aparecer en casos de BaseFragment .

Layout panel de la Figura 1. Dual

Preferencias de nivel superior

Preferencias

Las preferencias de nivel superior son CarUiPreferences personalizadas con un diseño ligeramente modificado para cambiar la altura de preferencia y la forma del fondo. Hay muchas formas diferentes de personalizar el aspecto de estas preferencias:

Valor Descripción
res/layout/top_level_preference.xml Superposición de todo el diseño preferencia.
top_level_preference_min_height Altura mínima de la preferencia de nivel superior. Dependiendo del contenido (por ejemplo, hay un subtítulo), las preferencias pueden ser más altas que este valor.
top_level_preference_corner_radius Radio del redondeo de la esquina.
top_level_preference_background Fondo de las preferencias de nivel superior cuando no están resaltadas actualmente.
top_level_preference_highlight Antecedentes de las preferencias de nivel superior cuando se resaltan.

Iconos

La Figura 2 ilustra cómo los iconos de nivel superior ahora consisten en un icono de vector dentro de una forma de fondo de color. Esta forma está actualmente configurada para soportar una forma ovalada o rectangular. De forma predeterminada, la forma se establece en ovalada.

Para cambiar el valor predeterminado, modificar el valor en config_top_level_icon_shape (donde 0 es rectángulo y 1 es oval). Los iconos son creados por insetting el icono de primer plano por top_level_foreground_icon_inset de la forma de fondo. Cada icono de nivel superior tiene un color de primer plano especificado en res/values/colors.xml y un color de fondo especificado en el res/color carpeta.

Para crear una apariencia personalizada, puede anular todos los valores de color.

Componentes preferentes Figura 2. de nivel superior

Los iconos de preferencias inyectados que caen en las categorías especificadas por config_top_level_injection_categories también son tratados como iconos de nivel superior. Los iconos proporcionados están insertados con el mismo valor y tienen la misma forma que la especificada para todos los demás iconos de nivel superior (ver arriba). Sin embargo, el fondo se determina observando los siguientes atributos en este orden:

  1. com.android.settings.bg.argb datos Meta de la aplicación de inyección.
  2. com.android.settings.bg.hint datos Meta de la aplicación de inyección.
  3. top_level_injected_default_background especificado en res/values/colors.xml .

Hacer caso omiso de los datos de la aplicación por vía intravenosa y utilizar siempre el fondo por defecto, conjunto config_top_level_injection_background_always_use_default de true .