Tùy chỉnh khung kép

Android 12 giới thiệu thiết kế khung kép , với menu L0 tĩnh ở bên trái và khung nội dung ở bên phải. Tính năng này giới thiệu nhiều tùy chọn tùy chỉnh mới. Trang này nêu chi tiết các tính năng đó và giải thích cách bạn có thể tùy chỉnh các tùy chọn của riêng mình.

Hoàn nguyên về khung đơn

Theo mặc định, CarSettings hiện hiển thị chế độ xem khung kép khi cửa sổ ứng dụng có chiều rộng lớn hơn hoặc bằng 1400dp và chế độ xem khung đơn nếu ngược lại. Để tùy chỉnh điều này cho một thiết bị cụ thể, hãy sử dụng lớp phủ tài nguyên thời gian chạy (RRO) để nhắm mục tiêu các giá trị cấu hình cần thiết:

Giá trị Sự miêu tả
config_global_force_single_pane Đặt thành true nếu toàn bộ ứng dụng chạy ở cấu hình một ngăn.
config_homepage_fragment_class Chỉ định đoạn bắt đầu cho trang chủ. Trong khung kép, phần này được sử dụng cho đoạn đầu tiên trong khung nội dung. Trong một khung, đây phải là đoạn trang chủ.

Phím tiêu đề

Vì các hoạt động CarSettings khác nhau có thể có IA tùy chỉnh nên ánh xạ khóa tiêu đề được cung cấp để đơn giản hóa các tùy chỉnh. Trong AndroidManifest.xml , mọi hoạt động hỗ trợ khung kép đều có TOP_LEVEL_HEADER_KEY được chỉ định trong siêu dữ liệu của nó. Giá trị này trỏ tới một khóa được chỉ định trong res/values/header_keys.xml , được ánh xạ tới khóa ưu tiên của mục menu cấp cao nhất chứa đoạn bắt đầu. Do đó, nếu đoạn bắt đầu của một hoạt động bị thay đổi hoặc IA được sắp xếp lại sao cho một đoạn cụ thể nằm trong một tùy chọn cấp cao nhất khác, thì (các) ánh xạ có liên quan trong tệp header_keys.xml có thể được cập nhật để chỉ định giá trị chính xác .

Tùy chỉnh bố cục hoạt động

Bố cục của BaseCarSettingsActivity nằm ở res/layout/car_setting_activity và trong các phần sau:

Giá trị Sự miêu tả
top_level_menu Đoạn menu cấp cao nhất được hiển thị trong cấu hình khung kép. Chiều rộng của phần này được chỉ định bởi top_level_menu_width . Bố cục khung gầm (có thanh công cụ) được bao quanh khung nhìn này.
top_level_divider Đường thẳng đứng chia hai khung và bạn có thể tùy chỉnh chiều rộng của nó bằng top_level_divider_width .
fragment_container_wrapper Bố cục trình bao bọc cho ngăn nội dung (hoặc ngăn chính trong cấu hình một ngăn). Bố cục khung gầm (có thanh công cụ) được bao quanh khung nhìn này.
settings_focus_parking_view Triển khai tùy chỉnh FocusParkingView để giữ tiêu điểm xoay khi cần.
fragment_container Vùng chứa nội dung chính. Các đoạn nội dung sử dụng điều này làm bố cục mục tiêu.
restricted_message Chế độ xem chặn bị hạn chế UX sẽ được hiển thị trên các phiên bản của BaseFragment .

Hình 1. Bố cục khung kép

Tùy chọn cấp cao nhất

Tùy chọn cấp cao nhất là CarUiPreferences tùy chỉnh với bố cục được sửa đổi một chút để thay đổi chiều cao tùy chọn và hình dạng nền. Có nhiều cách khác nhau để tùy chỉnh giao diện của các tùy chọn này:

Giá trị Sự miêu tả
res/layout/top_level_preference.xml Xếp chồng toàn bộ bố cục ưu tiên.
top_level_preference_min_height Chiều cao tối thiểu của tùy chọn cấp cao nhất. Tùy thuộc vào nội dung (ví dụ: có phụ đề), tùy chọn có thể cao hơn giá trị này.
top_level_preference_corner_radius Bán kính làm tròn góc.
top_level_preference_background Nền của các tùy chọn cấp cao nhất hiện không được đánh dấu.
top_level_preference_highlight Nền của các tùy chọn cấp cao nhất khi được đánh dấu.

Biểu tượng cấp cao nhất

Hình 2 minh họa cách các biểu tượng cấp cao nhất hiện nay bao gồm biểu tượng vectơ bên trong hình nền có màu. Hình dạng này hiện được định cấu hình để hỗ trợ hình bầu dục hoặc hình chữ nhật. Theo mặc định, hình dạng được đặt thành hình bầu dục.

Để thay đổi giá trị mặc định, hãy sửa đổi giá trị trong config_top_level_icon_shape (trong đó 0 là hình chữ nhật và 1 là hình bầu dục). Các biểu tượng được tạo bằng cách chèn biểu tượng nền trước theo top_level_foreground_icon_inset từ hình nền. Mỗi biểu tượng cấp cao nhất có màu nền trước được chỉ định trong res/values/colors.xml và màu nền được chỉ định trong thư mục res/color .

Để tạo giao diện tùy chỉnh, bạn có thể ghi đè tất cả các giá trị màu.

Hình 2. Các thành phần ưu tiên cấp cao nhất

Các biểu tượng dành cho tùy chọn được chèn thuộc các danh mục được chỉ định bởi config_top_level_injection_categories cũng được coi là biểu tượng cấp cao nhất. Các biểu tượng được cung cấp được lồng vào cùng một giá trị và có cùng hình dạng như được chỉ định cho tất cả các biểu tượng cấp cao nhất khác (xem ở trên). Tuy nhiên, nền được xác định bằng cách xem xét các thuộc tính sau theo thứ tự sau:

  1. com.android.settings.bg.argb Dữ liệu meta từ ứng dụng tiêm.
  2. com.android.settings.bg.hint Dữ liệu meta từ ứng dụng tiêm.
  3. top_level_injected_default_background Được chỉ định trong res/values/colors.xml .

Để bỏ qua dữ liệu ứng dụng được đưa vào và luôn sử dụng nền mặc định, hãy đặt config_top_level_injection_background_always_use_default thành true .