خيار مفضّل

يمكنك إنشاء شاشات إعدادات تفاعلية بدون الحاجة إلى التفاعل مع مساحة التخزين على الجهاز أو إدارة واجهة المستخدم.
التعديل الأخير الإصدار المستقر سحب المرشح الإصدار التجريبي إصدار أولي
26 تموز (يوليو) 2023 1.2.1 - - -

إعلان التبعيات

لإضافة اعتمادية على Preference، يجب إضافة مستودع Google Maven إلى مشروعك. الاطّلاع على مستودع Maven من Google لمزيد من المعلومات.

أضِف الملحقات التابعة للعناصر التي تحتاجها في ملف build.gradle لـ لتطبيقك أو الوحدة التي تستخدمها:

Groovy

dependencies {
    def preference_version = "1.2.1"

    // Java language implementation
    implementation "androidx.preference:preference:$preference_version"
    // Kotlin
    implementation "androidx.preference:preference-ktx:$preference_version"
}

Kotlin

dependencies {
    val preference_version = "1.2.1"

    // Java language implementation
    implementation("androidx.preference:preference:$preference_version")
    // Kotlin
    implementation("androidx.preference:preference-ktx:$preference_version")
}

لمزيد من المعلومات عن العناصر التابعة، يُرجى الاطّلاع على إضافة تبعيات الإصدار.

ملاحظات

تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كان لديك أفكار لتحسين هذه المكتبة. يُرجى إلقاء نظرة على المشاكل الحالية في هذه المكتبة قبل إنشاء مكتبة جديدة. يمكنك إضافة تصويتك إلى مشكلة حالية عن طريق بالنقر فوق زر النجمة.

إنشاء عدد جديد

يُرجى الاطّلاع على مستندات أداة تتبُّع المشاكل. لمزيد من المعلومات.

الإصدار 1.2

الإصدار 1.2.1

26 تموز (يوليو) 2023

تم طرح androidx.preference:preference:1.2.1. يحتوي الإصدار 1.2.1 على عمليات الالتزام هذه.

إصلاح الأخطاء

  • يعالج PreferenceHeaderFragmentCompat الآن زر الرجوع في النظام بشكل صحيح عند استخدامه في ComponentDialog أو عند استخدام مكتبات مثل @AndroidEntryPoint من Hilt التي تغطي Context للجزء.
  • تعتمد التفضيل الآن على النشاط 1.5.1. (Ie5d22)
  • تنشر PreferenceHeaderFragmentCompat.onCreateInitialDetailFragment الآن header.extras كوسيطات Fragment.

الإصدار 1.2.0

26 يناير 2022

تم طرح androidx.preference:preference:1.2.0 وandroidx.preference:preference-ktx:1.2.0. يحتوي الإصدار 1.2.0 على عمليات الالتزام هذه.

تغييرات مهمة منذ الإصدار 1.1.0

  • تمت إضافة PreferenceHeaderFragmentCompat إلى الخيار المفضّل الذي يتضمّن لوحَين والذي يتم ضبطه تلقائيًا بناءً على حجم الجهاز المستخدَم، ما يجعله مناسبًا للاستخدام على الهواتف والأجهزة القابلة للطي والأجهزة اللوحية. يتم توفير جزء العنوان من خلال إلغاء طريقة onCreatePreferenceHeader() في PreferenceHeaderFragmentCompat. سيؤدي أيّ <Preference> في العنوان PreferenceFragmentCompat الذي يستخدم app:fragment إلى ظهور هذا الجزء في جزء التفاصيل الثاني. يمكن تخصيص جزء التفاصيل الأولي الذي يجب عرضه قبل اختيار أي إعداد مفضّل يدويًا من خلال تجاوز onCreateInitialDetailFragment(). يعرض التنفيذ الافتراضي التفضيل الأول الذي يحتوي على جزء محدد عليه.
class TwoPanePreference : PreferenceHeaderFragmentCompat() {
    override fun onCreatePreferenceHeader(): PreferenceFragmentCompat {
        return PreferenceHeader()
    }
}
  • تمت إضافة التعليقات التوضيحية للقيم الفارغة إلى العديد من واجهات برمجة التطبيقات التي لم تحدّد @NonNull من قبل أو @Nullable من المحتمل أن يكون هذا تغييرًا قد يؤدي إلى عطل في مصدر Kotlin إذا لم تتطابق قابلية القيم الفارغة التي اخترتها في رمز Kotlin مع قابلية القيم الفارغة المحددة الآن.

  • يبحث PreferenceFragmentCompat الآن عن تنفيذات للواجهات OnPreferenceStartFragmentCallback وOnNavigateToScreenListener وOnDisplayPreferenceDialogListener على الأجزاء الرئيسية قبل البحث لمعرفة ما إذا كان سياق أو نشاط الاستضافة يوفِّران هذه الواجهات.

الإصدار 1.2.0-rc01

15 كانون الأول (ديسمبر) 2021

تم طرح androidx.preference:preference:1.2.0-rc01 وandroidx.preference:preference-ktx:1.2.0-rc01 بدون أي تغييرات منذ 1.2.0-beta01. يحتوي الإصدار 1.2.0-rc01 على هذه عمليات التنفيذ.

الإصدار 1.2.0-beta01

17 تشرين الثاني (نوفمبر) 2021

تم طرح androidx.preference:preference:1.2.0-beta01 وandroidx.preference:preference-ktx:1.2.0-beta01 بدون أي تغييرات من الإعدادات المفضّلة 1.2.0-alpha02. يحتوي الإصدار 1.2.0-beta01 على عمليات التنفيذ هذه.

الإصدار 1.2.0-alpha02

3 تشرين الثاني (نوفمبر) 2021

تم طرح androidx.preference:preference:1.2.0-alpha02 وandroidx.preference:preference-ktx:1.2.0-alpha02. يحتوي الإصدار 1.2.0-alpha02 على عمليات التنفيذ هذه.

التغييرات في واجهة برمجة التطبيقات

  • تمت إضافة التعليقات التوضيحية للقيم الفارغة إلى العديد من واجهات برمجة التطبيقات التي لم تحدّد @NonNull من قبل أو @Nullable (I04252، Ie2cc0)
  • تمت إزالة واجهة برمجة التطبيقات openPreference() من PreferenceHeaderFragmentCompat - هذه الطريقة في هذه الحالة وينبغي ألا يتم استدعاؤه يدويًا. (Ia6989)

تغييرات السلوك

  • استدعاءات PreferenceFragmentCompat للموقع OnNavigateToScreenListener، يتبع OnDisplayPreferenceDialogListener الآن النمط نفسه مثل OnPreferenceTreeClickListener البحث عن التسلسل الهرمي للأجزاء الرئيسية المستمعين قبل النظر لمعرفة ما إذا كان المضيف يستخدم السياق أو النشاط هذه الواجهات. (I7ae6c)

الإصدار 1.2.0-alpha01

27 تشرين الأول (أكتوبر) 2021

تم طرح androidx.preference:preference:1.2.0-alpha01 وandroidx.preference:preference-ktx:1.2.0-alpha01. يحتوي الإصدار 1.2.0-alpha01 على هذه عمليات التنفيذ.

الميزات الجديدة

  • تمت إضافة PreferenceHeaderFragmentCompat للخيار المفضّل المستند إلى جزأين (I9a2d8)

تغييرات السلوك

  • يمكن الآن تنفيذ استدعاءات التفضيلات لـ OnPreferenceDisplayDialogCallback وOnPreferencescreenCallback وOnPreferenceStartFragmentCallback جميعها في سياق غير متعلق بالنشاط. يتم التحقّق من الطريقة getContext() لمعرفة ما إذا كانت تنفّذ عمليات الاستدعاء هذه قبل التحقّق من getActivity(). إذا عرضت getContext() نشاطًا (الحالة الشائعة)، فلن يكون هناك تغيير في السلوك.

  • يبحث طلب PreferenceFragmentCompat إلى onPreferenceTreeClick الآن عن عمليات تنفيذ واجهة OnPreferenceStartFragmentCallback على الأجزاء الرئيسية قبل التفكير في تنفيذ النشاط. (c64eed)

الإصدار 1.1

الإصدار 1.1.1

نيسان (أبريل) 2020

تم طرح androidx.preference:preference:1.1.1 وandroidx.preference:preference-ktx:1.1.1. يحتوي الإصدار 1.1.1 على عمليات الالتزام هذه.

إصلاح الأخطاء

  • لن تطرح "PreferenceDialogFragmentCompat" بعد الآن IllegalStateException عند تضخيم FragmentContainerView من XML. (b/150051716)

التعديلات المتعلقة بالاعتمادية

  • تعتمد الإعدادات المفضّلة الآن على القسم 1.2.4. (aosp/1277317)
  • تعتمد اعتمادية preference-ktx الآن على androidx.core:core-ktx:1.1.0 وandroidx.fragment:fragment-ktx:1.2.4، ما يعكس اعتماديات عنصر preference الرئيسي وتضمن تحديث preference-ktx لكل من العنصرين الرئيسيين و-ktx للتبعيات الانتقالية. (aosp/1277319)

الإصدار 1.1.0

5 أيلول (سبتمبر) 2019

تم طرح androidx.preference:preference:1.1.0 وandroidx.preference:preference-ktx:1.1.0. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.

إذا كان هذا هو الإصدار الأول من 1.1.* الذي تريد التحديث إليه، إليك قائمة موجزة بالتغييرات الأكبر منذ آخر إصدار ثابت، وهو 1.0.0. يمكنك أيضًا الاستفادة من دليل الإعدادات ونموذج التطبيق وحديث مؤتمر Android Dev Summit.

تغييرات مهمة منذ الإصدار 1.0.0

  • تم نهائيًا إيقاف وظائف الإصدار PreferenceFragment والفئات الأخرى التي تستخدم أجزاء إطار العمل. عليك استخدام PreferenceFragmentCompat وغيرها من الصفوف المماثلة*.
  • يمكنك الآن ضبط SummaryProvider على إحدى "الإعدادات المفضّلة" لضبط ملخّصها ديناميكيًا عند تعديل الإعدادات المفضّلة أو عند ظهورها للمستخدم. يمكنك الاطّلاع على الدليل للحصول على مزيد من المعلومات.
  • تمت إضافة الواجهة EditTextPreference.OnBindEditTextListener. يتيح ذلك تخصيص EditText المعروض في مربّع الحوار المقابل بعد ربط مربّع الحوار. وهذا استبدال مباشر لاستخدام سمات مثل android:inputType مباشرةً على EditTextPreference، وهو غير متاح في مكتبة AndroidX. يمكنك الاطّلاع على الدليل للحصول على مزيد من المعلومات.
  • تمت إضافة Preference.setCopyingEnabled() عند ضبط الإعدادات، سيؤدي الضغط مع الاستمرار على "الإعدادات المفضّلة" إلى عرض قائمة سياق تسمح بنسخ ملخّص الإعداد المفضّل.
  • تم تعديل نمط "SeekBarPreference" ليتطابق مع مواصفات "المواد". يمكنك الاطّلاع على سجلّ التغييرات التفصيلي لمعرفة التغييرات الأخرى التي تم إجراؤها على "SeekBarPreference".
  • قدر كبير من إصلاحات الأخطاء، وتحديثات الأنماط، وإصلاحات التوافق على مستوى واجهة برمجة التطبيقات، وتحسينات QOL العامة.

الإصدار 1.1.0-rc01

2 تموز (يوليو) 2019

تم طرح androidx.preference:preference:1.1.0-rc01 وandroidx.preference:preference-ktx:1.1.0-rc01. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.

التغييرات في واجهة برمجة التطبيقات

  • إيقاف Preference#onInitializeAccessibilityNodeInfo
  • أنشأت هذه الطريقة معلومات عن عقدة تسهيل الاستخدام ضِمن إعدادات مفضّلة معيّنة، ولكن هذه هي الطبقة الخاطئة في هذا التخصيص. إذا كنت ترغب في ضبط معلومات إمكانية الوصول، يجب عليك بدلاً من ذلك إلغاء onBindViewHolder، وإضافة معلومات إمكانية الوصول إلى العرض مباشرةً.

الإصدار 1.1.0-beta01

5 حزيران (يونيو) 2019

تم طرح androidx.preference:preference:1.1.0-beta01 وandroidx.preference:preference-ktx:1.1.0-beta01. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.

تغييرات مهمة منذ الإصدار 1.1.0

إذا كان هذا هو أول إصدار 1.1.* يتم التحديث إليه، إليك قائمة موجزة بالتغييرات الأكبر منذ آخر إصدار ثابت، وهو 1.1.0. يمكنك أيضًا الاستفادة من دليل الإعدادات ونموذج التطبيق وحديث مؤتمر Android Dev Summit.

  • تم إيقاف PreferenceFragment والفئات الأخرى التي تستخدم أجزاء إطار العمل نهائيًا، وعليك استخدام PreferenceFragmentCompat وفئات *compat أخرى بدلاً من ذلك.
  • يمكنك الآن ضبط SummaryProvider على إحدى التفضيلات لضبط ملخصه ديناميكيًا كلما تم تعديل التفضيل أو أصبح مرئيًا للمستخدم. يمكنك الاطّلاع على الدليل للحصول على مزيد من المعلومات.
  • تمت إضافة الواجهة EditTextPreference.OnBindEditTextListener. ويسمح ذلك بتخصيص نص EditText المعروض في مربّع الحوار المقابل بعد ربط مربّع الحوار. وهذا بديل مباشر لاستخدام سمات، مثل android:inputType مباشرةً من EditTextPreference، وهي غير متاحة في مكتبة AndroidX. يمكنك الاطّلاع على الدليل للحصول على مزيد من المعلومات.
  • تمت إضافة Preference.setCopyingEnabled() عند ضبط الإعدادات، سيؤدي الضغط مع الاستمرار على "الإعدادات المفضّلة" إلى عرض قائمة سياق تسمح بنسخ ملخّص الإعداد المفضّل.
  • تم تعديل نمط SeekBarPreference ليتطابق مع مواصفات Material. يمكنك الاطّلاع على سجلّ التغييرات التفصيلي للتعرّف على التغييرات الأخرى التي تم إجراؤها على SeekBarPreference.
  • قدر كبير من إصلاحات الأخطاء، وتحديثات الأنماط، وإصلاحات التوافق على مستوى واجهة برمجة التطبيقات، وتحسينات QOL العامة.

تغييرات واجهة برمجة التطبيقات منذ الإصدار 1.1.0-alpha05

  • لإزالة getOnBindEditTextListener من واجهة برمجة التطبيقات العامة، لن تحتاج إلا إلى استخدام setOnBindEditTextListener عند التفاعل مع واجهة برمجة التطبيقات هذه.

يُرجى الإبلاغ عن الأخطاء هنا إذا واجهت أي مشاكل أو إذا كانت لديك اقتراحات بشأن ميزات جديدة.

الإصدار 1.1.0-alpha05

7 أيار (مايو) 2019

تم طرح androidx.preference:preference:1.1.0-alpha05 وandroidx.preference:preference-ktx:1.1.0-alpha05. يمكن الاطّلاع على صفقات الاشتراك المضمَّنة في هذا الإصدار هنا.

الميزات الجديدة

  • تم تعديل التصميم لاستخدام الإعدادات المفضّلة غير القابلة للاختيار: يتشارك العنوان والملخّص الآن اللون نفسه لتوضيح أنّه لا يمكن التفاعل معهما، وأنّهما يُستخدمان فقط لعرض المعلومات.
  • ملاحظة: يمكنك إضافة enableCopying="true" إلى إعداداتك المفضّلة غير القابلة للاختيار، كي تتمكّن من الضغط مع الاستمرار لنسخ الملخّص.

إصلاح الأخطاء

  • تم إصلاح الانحدار حيث سيكون لـ PreferenceCategory والتفضيلات الأخرى غير القابلة للاختيار تأثير مضاعف عند تحديدها.
  • تم إصلاح مشكلة في إمكانية الوصول حيث لا يظهر خيار DropDownPreferences كعنصر قابل للنقر في TalkBack.
  • تم إصلاح بعض مشاكل تنسيق من اليمين إلى اليسار
  • تم تعديل بعض التعليقات التوضيحية القابلة للقيم الفارغة في PreferenceFragmentCompat لمطابقة الجزء.

الإصدار 1.1.0-alpha04

13 آذار (مارس) 2019

تم طرح androidx.preference:preference:1.1.0-alpha04 وandroidx.preference:preference-ktx:1.1.0-alpha04. يمكن الاطّلاع هنا على القائمة الكاملة لخطط الاشتراك المضمَّنة في هذا الإصدار.

الميزات الجديدة

آخر الأخبار حول SeekBarPreference

  • تم تعديل النمط ليتوافق مع مواصفات المواد.
    • أصبح تصنيف القيمة مخفيًا الآن تلقائيًا على الرغم من إمكانية عرضه مع app:showSeekBarValue="true" أو setShowSeekBarValue(true). هذه التسمية ليست جزءًا من مواصفات Material، ولكننا ندرك أنها مستخدَمة بشكل كبير، لذا سنواصل استخدامها - على الرغم من أننا لا ننصح باستخدامها.
    • يتم الآن تعديل تصنيف القيمة أثناء سحب شريط التمرير، بدلاً من وقت إصداره. يُرجى العِلم أنّ هذا لا يعني تعديل القيمة داخليًا. ويمكنك الاطّلاع أدناه على واجهة برمجة تطبيقات جديدة تتيح تفعيل هذه الوظيفة.
    • ملاحظة: على الرغم من توفّر هذه الميزة، يجب تجنّب إعداد ملخّص على SeekBarPreference، فهو ليس مقصودًا وليس جزءًا من مواصفات Material.
  • إتاحة التحديثات المستمرة، ما يسمح لـ SeekBar بتعديل القيمة المحفوظة أثناء سحب شريط التمرير. ويمكن تفعيل هذا الإعداد آليًا أو من خلال app:updatesContinuously="true" أو setUpdatesContinuously(true). وسيتم تنشيطها كلما تغير موضع شريط التمرير على الشاشة.

التغييرات في واجهة برمجة التطبيقات

  • تتم إضافة التعليقات التوضيحية غير المضمّنة في القيم الفارغة إلى findPreference().

إصلاح الأخطاء

  • تم إصلاح خطأ عدم إزالة مستمعي قائمة السياقات بشكل صحيح إذا لم يتم تفعيل النسخ

الإصدار 1.1.0-alpha03

7 شباط (فبراير) 2019

androidx.preference:preference 1.1.0-alpha03

androidx.preference:preference 1.1.0-alpha03 و تم طرح androidx.preference:preference-ktx 1.1.0-alpha03 مع التغييرات التالية.

إصلاح الأخطاء

  • تم إصلاح مشكلة عدم ظهور النافذة المنبثقة للنسخ/اللصق أحيانًا في مربع حوار EditTextPreference
  • تم إصلاح مشكلة عدم تسجيل المحوّل الأساسي بشكل صحيح، ما تسبّب في تسرُّب الذاكرة في ظل ظروف معيّنة (b/121006469).
  • تم إصلاح بعض الأعطال المتعلقة بمربعات الحوار التي حدثت أثناء تغيير الإعداد (b/122167543)
  • ميزة SummaryProvider الثابتة لا تعمل مع سياسة MultiSelectListPreference (b/123022772)

الإصدار 1.1.0-alpha02

17 كانون الأول (ديسمبر) 2018

يُرجى أيضًا الاطّلاع على تم تحديث دليل الإعدادات ونموذج .

الميزات الجديدة

  • تمت إضافة واجهة EditTextPreference.OnBindEditTextListener ويسمح هذا بتخصيص نص EditText المعروض في بعد ربط مربّع الحوار. على سبيل المثال، ضبط تصميم مخصص نوع / طول الإدخال أو إضافة TextWatcher.

  • تاريخ الإضافة: Preference.setCopyingEnabled() عند الضبط، سيؤدي الضغط مع الاستمرار على "الإعدادات المفضّلة" إلى عرض قائمة سياق تسمح بنسخ ملخّص الإعدادات المفضّلة. يمكن استخدام ذلك للسماح بنسخ المعلومات الثابتة، مثل أرقام التعريف الخاصة بالمستخدم أو معلومات إصدار التطبيق.

  • تم تطبيق Preferences Theme الآن على مظهر النشاط ويعني ذلك أنّه عند إنشاء إعدادات مفضّلة من خلال رمز برمجي، لن تحتاج بعد ذلك إلى استخدام السياق من PreferenceManager#getContext()، إذ يمكنك استخدام سياق الجزء/النشاط.

التغييرات في واجهة برمجة التطبيقات

  • تمت إعادة ضبط بنية findPreference() لعرض <T extends Preference>. وهذا يعني أنّك لست بحاجة إلى إرسال الإعدادات المفضّلة بشكل صريح عند استخدام findPreference(). على سبيل المثال: EditTextPreference preference = findPreference(“edit_text”) هو الآن رمز صالح.

الإصدار 1.1.0-alpha01

5 تشرين الثاني (نوفمبر) 2018

الميزات الجديدة

  • يمكنك الآن ضبط SummaryProvider على تفضيل لإعداده ديناميكيًا عند تعديل الإعداد المفضّل أو عند ظهوره للمستخدم.
  • تمت إضافة عمليات تنفيذ SummaryProvider التلقائية الخاصة بـ ListPreference و EditTextPreference، يعمل عند تعيينه على تحديث ملخص ملف التفضيل لإظهار قيمته المحفوظة، أو "لم يتم الضبط" إذا لم يتم حفظ أي قيمة. يمكن ضبطها باستخدام app:useSimpleSummaryProvider=”true”
  • تمت إضافة PreferenceGroup#removePreferenceRecursively، مما يؤدي إلى العثور على إزالة تفضيل من المجموعة، أو مجموعة متداخلة أسفل في القائمة التسلسل الهرمي.

التغييرات في واجهة برمجة التطبيقات

  • تم استخدام PreferenceFragment والفئات الأخرى التي تستخدم أجزاء إطار العمل متوقفة - يجب عليك استخدام PreferenceFragmentCompat وفئات التوافق الأخرى بدلاً من ذلك.

إصلاح الأخطاء

  • لا يعمل الرمز الثابتةSpaceReserve بشكل صحيح مع سمة PreferenceCategory.
  • تم إصلاح فئة التفضيلات التي لا تستخدم colorAccent للون عنوانها أقل من واجهة برمجة التطبيقات 21.
  • تم إصلاح بعض تناقضات تنسيق SeekBarPreference تحت واجهة برمجة التطبيقات 21.