Tuỳ chỉnh ngăn kép

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

Quay lại một ngăn

Theo mặc định, CarSettings hiện hiển thị chế độ xem ngăn đôi khi chiều rộng cửa sổ ứng dụng lớn hơn hoặc bằng 1400 dp và chế độ xem ngăn đơn nếu không. Để tuỳ chỉnh tính năng 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ị Mô tả
config_global_force_single_pane Đặt thành true nếu toàn bộ ứng dụng sẽ chạy ở cấu hình ngăn đơn.
config_homepage_fragment_class Chỉ định mảnh bắt đầu cho trang chủ. Trong ngăn kép, thuộc tính này dùng cho mảnh ban đầu trong ngăn nội dung. Trong ngăn đơn, đây phải là mảnh trang chủ.

Khoá tiêu đề

Vì các hoạt động khác nhau trên CarSettings có thể có một IA tuỳ chỉnh, nên một liên kết khoá tiêu đề sẽ được cung cấp để đơn giản hoá các chế độ tuỳ chỉnh. Trong AndroidManifest.xml, mọi hoạt động hỗ trợ ngăn đôi đều có TOP_LEVEL_HEADER_KEY được chỉ định trong siêu dữ liệu. Giá trị này trỏ đến một khoá được chỉ định trong res/values/header_keys.xml, khoá này được liên kết với khoá tuỳ chọn của mục trình đơn cấp cao nhất mà mảnh bắt đầu thuộc về. Do đó, nếu mảnh 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 mảnh cụ thể thuộc một tuỳ chọn ưu tiên cấp cao khác, thì(các) mối liên kết 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.

Tuỳ chỉnh bố cục hoạt động

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

Giá trị Mô tả
top_level_menu Mảnh trình đơn cấp cao nhất hiển thị trong cấu hình ngăn đôi. Chiều rộng của phần này được top_level_menu_width chỉ định. Bố cục cơ sở của khung (có thanh công cụ) được bao bọc xung quanh thành phần hiển thị này.
top_level_divider Đường kẻ dọc phân chia hai ngăn và bạn có thể tuỳ chỉnh chiều rộng của đường kẻ này 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). Một bố cục cơ sở của khung (có thanh công cụ) được bao quanh thành phần hiển thị này.
settings_focus_parking_view Triển khai tuỳ 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 mảnh nội dung sử dụng bố cục này làm bố cục mục tiêu.
restricted_message Chế độ xem chặn bị hạn chế về trải nghiệm người dùng sẽ hiển thị trên các thực thể của BaseFragment.

Hình 1. Bố cục hai ngăn

Lựa chọn ưu tiên cấp cao nhất

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

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

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

Hình 2 minh hoạ cách các biểu tượng cấp cao nhất hiện bao gồm một biểu tượng vectơ bên trong một 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 bằng top_level_foreground_icon_inset từ hình dạng nền. Mỗi biểu tượng cấp cao nhất có một màu nền trước được chỉ định trong res/values/colors.xml và một màu nền được chỉ định trong thư mục res/color.

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

Hình 2. Thành phần tuỳ chọn cấp cao nhất

Biểu tượng của các lựa chọn ưu tiên được chèn thuộc danh mục do config_top_level_injection_categories chỉ định 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 ghép theo cùng một giá trị và 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ự này:

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

Để bỏ qua dữ liệu ứng dụng được chèn 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.