تنظيم الإعدادات جزء من Android Jetpack.
يمكن أن تجعل شاشات الإعدادات الكبيرة والمعقدة من الصعب على المستخدم العثور على الإعداد المحدد الذي يريدون تغييره. توفر مكتبة التفضيلات الطرق التالية لتنظيم شاشات إعداداتك بشكل أفضل.
فئات الإعدادات المفضّلة
إذا كان لديك العديد من المعلومات ذات الصلة
Preference عناصر على عنصر واحد
الشاشة، فيمكنك تجميعها باستخدام
PreferenceCategory حاسمة
يعرض PreferenceCategory عنوان الفئة ويفصل بصريًا
.
لتحديد PreferenceCategory في XML، يجب إحاطة علامات Preference باستخدام
PreferenceCategory، على النحو التالي:
<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto"> <PreferenceCategory app:key="notifications_category" app:title="Notifications"> <SwitchPreferenceCompat app:key="notifications" app:title="Enable message notifications"/> </PreferenceCategory> <PreferenceCategory app:key="help_category" app:title="Help"> <Preference app:key="feedback" app:summary="Report technical issues or suggest new features" app:title="Send feedback"/> </PreferenceCategory> </PreferenceScreen>
تظهر النتيجة على النحو التالي:
تقسيم التسلسل الهرمي إلى شاشات متعددة
إذا كان لديك عدد كبير من عناصر Preference أو فئات مختلفة، يمكنك
يمكنهم عرضها على شاشات منفصلة. كل شاشة عبارة عن
PreferenceFragmentCompat بتدرّج هرمي منفصل خاص بها. Preference عناصر
في الشاشة الأولية يمكنك الارتباط بعد ذلك بالشاشات الفرعية التي تحتوي على
والتفضيلات.
يوضح الشكل 2 تسلسلاً هرميًا بسيطًا يحتوي على فئتين: الرسائل المزامنة.
يوضح الشكل 3 نفس مجموعة التفضيلات مقسّمة إلى شاشات متعددة:
لربط الشاشات باستخدام Preference، يمكنك الإعلان عن app:fragment بتنسيق XML أو
يمكنك استخدام
Preference.setFragment()
يمكنك إطلاق اسم حزمة PreferenceFragmentCompat الكامل عند
تم النقر على Preference، كما هو موضح في المثال التالي:
<Preference app:fragment="com.example.SyncFragment" .../>
عندما ينقر المستخدم على Preference مع Fragment مرتبط، تظهر الواجهة
طريقة واحدة
PreferenceFragmentCompat.OnPreferenceStartFragmentCallback.onPreferenceStartFragment()
البيانات. تتيح لك هذه الطريقة معالجة عرض الشاشة الجديدة
يتم تنفيذ الشاشة في منطقة Activity المحيطة.
تبدو عملية التنفيذ النموذجية مشابهة لما يلي:
Kotlin
class MyActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPreferenceStartFragmentCallback { ... override fun onPreferenceStartFragment(caller: PreferenceFragmentCompat, pref: Preference): Boolean { // Instantiate the new Fragment. val args = pref.extras val fragment = supportFragmentManager.fragmentFactory.instantiate( classLoader, pref.fragment) fragment.arguments = args fragment.setTargetFragment(caller, 0) // Replace the existing Fragment with the new Fragment. supportFragmentManager.beginTransaction() .replace(R.id.settings_container, fragment) .addToBackStack(null) .commit() return true } }
Java
public class MyActivity extends AppCompatActivity implements PreferenceFragmentCompat.OnPreferenceStartFragmentCallback { ... @Override public boolean onPreferenceStartFragment(PreferenceFragmentCompat caller, Preference pref) { // Instantiate the new Fragment. final Bundle args = pref.getExtras(); final Fragment fragment = getSupportFragmentManager().getFragmentFactory().instantiate( getClassLoader(), pref.getFragment()); fragment.setArguments(args); fragment.setTargetFragment(caller, 0); // Replace the existing Fragment with the new Fragment. getSupportFragmentManager().beginTransaction() .replace(R.id.settings_container, fragment) .addToBackStack(null) .commit(); return true; } }
شاشات التفضيلات
تعريف تدرّجات هرمية مدمَجة ضمن مورد XML نفسه باستخدام
لم يعُد <PreferenceScreen> متاحًا. استخدام كائنات Fragment المدمجة
بدلاً من ذلك.
استخدام أنشطة منفصلة
بدلاً من ذلك، إذا كنت بحاجة إلى تخصيص كل شاشة بشكل كبير، أو إذا كنت تريد عرض شاشة كاملة
Activity انتقالات بين الشاشات، يمكنك استخدام Activity منفصلة من أجل
كل PreferenceFragmentCompat. وبإجراء ذلك، يمكنك تخصيص كل
Activity وشاشة الإعدادات المقابلة له بالنسبة إلى معظم التطبيقات، لا
أوصيك بهذا؛ وبدلاً من ذلك، استخدِم Fragments على النحو الموضّح سابقًا.
لمزيد من المعلومات حول تشغيل Activity من Preference، يمكنك الاطّلاع على
إجراءات الإعدادات المفضّلة