ตั้งแต่วันที่ 27 มีนาคม 2025 เป็นต้นไป เราขอแนะนำให้ใช้ android-latest-release
แทน aosp-main
เพื่อสร้างและมีส่วนร่วมใน AOSP โปรดดูข้อมูลเพิ่มเติมที่หัวข้อการเปลี่ยนแปลงใน AOSP
รูปแบบและคอมโพเนนต์
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
ใน Android 8.0 เมนูการตั้งค่าจะมีคอมโพเนนต์และวิดเจ็ตหลายรายการที่ครอบคลุมการใช้งานทั่วไป เราขอแนะนำให้ผู้ผลิตและนักพัฒนาอุปกรณ์ใช้คอมโพเนนต์ทั่วไปเมื่อขยายแอปการตั้งค่าเพื่อให้อินเทอร์เฟซผู้ใช้ใหม่สอดคล้องกับ UI การตั้งค่าที่มีอยู่
สรุปการปรับปรุงมีดังนี้
- การเปลี่ยนแปลงลักษณะการทํางานของตัวแบ่งในเฟรมเวิร์กค่ากําหนดของไลบรารีสนับสนุน ตอนนี้ระบบจะวาดเส้นแบ่งระหว่างหมวดหมู่
- เปลี่ยนธีม ActionBar ตอนนี้แถบการดำเนินการใช้ธีมสีอ่อนพร้อมข้อความสีไฮไลต์
- เลย์เอาต์ค่ากําหนดใหม่ พื้นที่สำหรับไอคอนจะยังคงอยู่แม้ว่าค่ากําหนดจะไม่มีไอคอนก็ตาม
วิดเจ็ตใหม่
- วิดเจ็ตส่วนหัวสำหรับรายละเอียดแอป แสดงไอคอนแอป ป้ายกำกับแอป และข้อมูลอื่นๆ
- ปุ่มขยายในบางหน้า หน้าเว็บอาจเริ่มต้นแบบยุบซ่อนรายการที่ไม่สำคัญจนกว่าผู้ใช้จะคลิกปุ่มขยาย
- UI เครื่องมือเลือกแอปเริ่มต้น
- UI สำหรับเลือกเบราว์เซอร์เริ่มต้น แอปโทรศัพท์เริ่มต้น ฯลฯ
- จากเดิมที่เป็นกล่องโต้ตอบ ตอนนี้เป็น UI แบบปุ่มตัวเลือกแบบเต็มหน้าจอ
- ค่ากําหนดรูปแบบ "MasterSwitch" ค่ากําหนดนี้มีเป้าหมายการคลิก 2 รายการ เป้าหมายด้านซ้ายนําไปยังข้อมูลโค้ดหรือความตั้งใจย่อย เป้าหมายด้านขวาคือปุ่มเปิด/ปิดที่ใช้ควบคุมการเปิด/ปิดทั้งหน้า
ตัวอย่างและแหล่งที่มา
- ลักษณะการทํางานของตัวแบ่ง
- หน้าทั้งหมดในการตั้งค่าได้รับการแก้ไขให้ใช้ลักษณะการทํางานของตัวแบ่งใหม่
- ลักษณะการทํางานของตัวแบ่งกั้นจะกําหนดเป็น ThemeOverlay ใน
packages/apps/Settings/res/values/styles_preference.xml
- การเปลี่ยนแปลงธีมของ ActionBar
- หน้าทั้งหมดในการตั้งค่าได้รับการแก้ไขให้ใช้ธีม ActionBar ใหม่
- ธีมจะกำหนดไว้ใน Theme.DeviceDefault.Settings
- เลย์เอาต์ค่ากำหนดใหม่
- ตอนนี้หน้าต่างๆ ในการตั้งค่าใช้เลย์เอาต์ค่ากำหนดใหม่แล้ว
- คุณดูรหัสได้ที่
packages/apps/Settings/res/values/styles_preference.xml
- วิดเจ็ตส่วนหัวของแอป
- หน้าข้อมูลแอปส่วนใหญ่ในการตั้งค่าใช้ส่วนหัวแอปใหม่อยู่แล้ว
- ดูตัวอย่างและโค้ดได้ที่
packages/apps/Settings/src/com/android/settings/applications/AppHeaderController.java
- ปุ่มขยาย
- เครื่องมือเลือกแอปเริ่มต้น
- คุณดูรหัสของคลาสพื้นฐานได้ใน
packages/apps/Settings/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java
- DefaultAppPickerFragment มีคลาสย่อยหลายคลาส โดยแต่ละคลาสจะใช้เครื่องมือเลือกสำหรับ Intent ที่แตกต่างกัน
- ค่ากําหนดสไตล์ MasterSwitch
- รหัสอยู่ที่นี่
https://cs.android.com/android/platform/superproject/+/main:packages/apps/Settings/src/com/android/settings/wifi/WifiPrimarySwitchPreferenceController.java
- ตัวอย่าง Use Case คือสวิตช์หลักของ Wi-Fi ดูตัวอย่างได้ที่
packages/apps/Settings/src/com/android/settings/wifi/WifiMasterSwitchPreferenceController.java
การใช้งาน
ผู้ผลิตอุปกรณ์สามารถเริ่มใช้คอมโพเนนต์ใหม่ทั้งหมดได้ทันที
หาก OEM ตัดสินใจที่จะใช้ค่ากำหนดสไตล์ "MasterSwitch" ใหม่หรือเครื่องมือเลือกแอปเริ่มต้น ก็ควรทำตามตัวอย่างในเอกสารนี้และไฟล์อ้างอิง (Javadoc) ที่เขียนขึ้นพร้อมกับคอมโพเนนต์แต่ละรายการเพื่อดูรายละเอียดเพิ่มเติม
ปรับแต่งเมนูการตั้งค่า
- ลักษณะการทํางานของเส้นแบ่ง หากต้องการเปลี่ยนวิธีวาดตัวแบ่ง ให้อัปเดตสไตล์ของตัวแบ่งการตั้งค่า และเปลี่ยนค่าต่อไปนี้
allowDividerAbove
allowDividerBelow
allowDividerAfterLastItem
- สีธีมของ ActionBar กิจกรรมควรใช้
Theme.DeviceDefault.Settings
เป็นธีม หรือสร้างธีมที่กำหนดเองโดยใช้ Theme.DeviceDefault.Settings
เป็นธีมหลัก
- วิดเจ็ตส่วนหัวของแอป ใช้ตัวตั้งค่าใน AppHeaderController เพื่อปรับแต่งแต่ละช่องและเรียกใช้
build()
เมื่อตั้งค่าช่องทั้งหมดแล้ว
- ปุ่มขยาย
- หากต้องการปิดใช้ฟังก์ชันการทำงานนี้อย่างสมบูรณ์ ให้ลบล้างคอนสตรัคเตอร์สำหรับ ProgressiveDisclosureMixin และตั้งค่า keepExpanded เป็น true
- หากต้องการปรับแต่งจำนวนรายการที่จะแสดงในตอนแรก ให้เรียกใช้เมธอด
ProgressiveDisclosureMixin.setTileLimit()
ในระหว่างเมธอด onAttach(Context)
ของข้อมูลโค้ด
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-07-27 UTC
[[["เข้าใจง่าย","easyToUnderstand","thumb-up"],["แก้ปัญหาของฉันได้","solvedMyProblem","thumb-up"],["อื่นๆ","otherUp","thumb-up"]],[["ไม่มีข้อมูลที่ฉันต้องการ","missingTheInformationINeed","thumb-down"],["ซับซ้อนเกินไป/มีหลายขั้นตอนมากเกินไป","tooComplicatedTooManySteps","thumb-down"],["ล้าสมัย","outOfDate","thumb-down"],["ปัญหาเกี่ยวกับการแปล","translationIssue","thumb-down"],["ตัวอย่าง/ปัญหาเกี่ยวกับโค้ด","samplesCodeIssue","thumb-down"],["อื่นๆ","otherDown","thumb-down"]],["อัปเดตล่าสุด 2025-07-27 UTC"],[],[],null,["# Patterns and components\n\nIn Android 8.0, the Settings menu gains several components and widgets that\ncover common uses. Device manufacturers and developers are encouraged to use the\ncommon components when extending the Settings app so new user interfaces stay\nconsistent with the existing Settings UI.\n\n\nHere is a summary of improvements:\n\n- Divider behavior change in support library Preference framework. Divider is now drawn between categories.\n- ActionBar theme change. The ActionBar now uses light color theme, with accent color text.\n- New preference layout. The space for icons remains even when a preference has no icon.\n\n\nNew widgets:\n\n- A header widget for app details. Displays app icon, app label and other information.\n- An expand button on some pages. Page can start as collapsed and hide less important items until user clicks expand button.\n- Default app picker UI:\n - The UI for choosing default browser, default phone app, etc.\n - Formerly a dialog, now it's a full screen radio button-based UI.\n- A \"MasterSwitch\" style preference. This is a preference with two click targets. Left target leads to a subsetting fragment or intent. Right target is a switch toggle, controlling on/off for the entire page.\n\nExamples and source\n-------------------\n\n- Divider behavior\n - All pages in Settings are modified to use the new divider behavior.\n - The divider behavior is defined as a ThemeOverlay in: \n `packages/apps/Settings/res/values/styles_preference.xml`\n- ActionBar theme change\n - All pages in Settings are modified to use the new ActionBar theme.\n - The theme is defined in Theme.DeviceDefault.Settings\n- New preference layout\n - Many pages in Settings are now using the new preference layout.\n - You can find the code in: \n `packages/apps/Settings/res/values/styles_preference.xml`\n- App header widget\n - Most app information pages in Settings are already implementing the new App header.\n - Examples and code can be found at: \n `packages/apps/Settings/src/com/android/settings/applications/AppHeaderController.java`\n- Expand button\n - Examples and code can be found at: \n `packages/apps/Settings/src/com/android/settings/dashboard/ProgressiveDisclosureMixin.java`\n\n **Note:** This component must be used together with\n DashboardFragment. (See more details about DashboardFragment in [Updated Information Architecture](/docs/core/settings/info-architecture).)\n- Default app picker\n - You can find the code for base class in: \n `packages/apps/Settings/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java`\n - There are several subclasses of DefaultAppPickerFragment, each implementing a picker for different intent.\n- *MasterSwitch* style preference\n - Code is at: `https://cs.android.com/android/platform/superproject/+/main:packages/apps/Settings/src/com/android/settings/wifi/WifiPrimarySwitchPreferenceController.java`\n - An example use case is Wi-Fi primary switch. You can find an example at: `packages/apps/Settings/src/com/android/settings/wifi/WifiMasterSwitchPreferenceController.java`\n\nImplementation\n--------------\n\n\nDevice manufacturers can start using all of the new components out of the box.\nIf OEMs decide to implement a new \"MasterSwitch\" style preference or default app\npicker, they should follow the examples in this document and the reference files\n(Javadoc) written with each component for more details.\n\nCustomize the settings menu\n---------------------------\n\n- Divider behavior. To change how divider is drawn, update the style for Settings dividers and change the value for the following:\n - `allowDividerAbove`\n - `allowDividerBelow`\n - `allowDividerAfterLastItem`\n- ActionBar theme color. Activities should use `Theme.DeviceDefault.Settings` as their theme, or create a custom theme using `Theme.DeviceDefault.Settings` as parent.\n- App header widget. Use setters in AppHeaderController to customize each field and call `build()` once all fields are set.\n- Expand button:\n - To fully disable the functionality, override the constructor for ProgressiveDisclosureMixin and set keepExpanded to true.\n - To customize how many items to show initially, call the `ProgressiveDisclosureMixin.setTileLimit()` method during fragment's `onAttach(Context)` method."]]