Switch

يتيح عنصر Switch للمستخدمين التبديل بين حالتين: تم وضع علامة في المربّع أو لم يتم وضع علامة فيه. في تطبيقك، يمكنك استخدام مفتاح تبديل للسماح للمستخدم بتنفيذ أحد الإجراءات التالية:

  • فعِّل أحد الإعدادات أو أوقِفه.
  • تفعيل ميزة أو إيقافها
  • حدِّد خيارًا.

يتكوّن هذا العنصر من جزأين: الصورة المصغّرة ومسار التمرير. الإبهام هو الجزء القابل للسحب في زر التبديل، أما المسار فهو الخلفية. يمكن للمستخدم سحب الإبهام إلى اليسار أو اليمين لتغيير حالة زر التبديل. يمكنهم أيضًا النقر على زر التبديل للتحقّق من المربّع وإزالة العلامة منه.

أمثلة على مكوّن "زر التبديل" في الوضعَين الفاتح والداكن
الشكل 1. مكوِّن مفتاح التبديل

التنفيذ الأساسي

اطّلِع على مرجع Switch للحصول على تعريف كامل لواجهة برمجة التطبيقات. في ما يلي بعض المَعلمات الرئيسية التي قد تحتاج إلى استخدامها:

  • checked: تمثّل هذه السمة الحالة الأولية للمفتاح.
  • onCheckedChange: دالة ردّ يتم استدعاؤها عند تغيُّر حالة زر التبديل.
  • enabled: ما إذا كان مفتاح التبديل مفعَّلاً أو غير مفعَّل.
  • colors: ألوان المفتاح

المثال التالي هو عملية تنفيذ بسيطة للدالة البرمجية القابلة للإنشاء Switch.

@Composable
fun SwitchMinimalExample() {
    var checked by remember { mutableStateOf(true) }

    Switch(
        checked = checked,
        onCheckedChange = {
            checked = it
        }
    )
}

يظهر عنصر التنفيذ هذا على النحو التالي عند إلغاء تحديده:

مفتاح تحكّم أساسي بدون وضع علامة فيه
الشكل 2. مفتاح تبديل تم إلغاء اختياره

إليك الشكل الذي يظهر به عند وضع علامة عليه:

مفتاح تبديل أساسي تم وضع علامة اختيار بجانبه
الشكل 3. مفتاح تحكّم تم تحديده

التنفيذ المتقدّم

في ما يلي المَعلمات الأساسية التي قد تحتاج إلى استخدامها عند تنفيذ عملية تبديل أكثر تقدّمًا:

  • thumbContent: استخدِم هذا الخيار لتخصيص مظهر الإبهام عند وضع علامة في المربّع.
  • colors: استخدِم هذه السمة لتخصيص لون المسار والإبهام.

الصورة المصغّرة المخصّصة

يمكنك تمرير أي عنصر قابل للإنشاء إلى المَعلمة thumbContent لإنشاء صورة مصغّرة مخصّصة. في ما يلي مثال على مفتاح تبديل يستخدم رمزًا مخصّصًا لزر التبديل:

@Composable
fun SwitchWithIconExample() {
    var checked by remember { mutableStateOf(true) }

    Switch(
        checked = checked,
        onCheckedChange = {
            checked = it
        },
        thumbContent = if (checked) {
            {
                Icon(
                    imageVector = Icons.Filled.Check,
                    contentDescription = null,
                    modifier = Modifier.size(SwitchDefaults.IconSize),
                )
            }
        } else {
            null
        }
    )
}

في هذا التنفيذ، يكون المظهر غير المحدّد هو نفسه المظهر في المثال الوارد في القسم السابق. ومع ذلك، عند تحديد هذا الخيار، يظهر التنفيذ على النحو التالي:

مفتاح تبديل يستخدِم المَعلمة thumbContent لعرض رمز مخصّص عند وضع علامة فيه.
الشكل 4. مفتاح تبديل يتضمّن رمزًا مخصّصًا يشير إلى التفعيل

ألوان مخصصة

يوضّح المثال التالي كيفية استخدام مَعلمة الألوان لتغيير لون زر التبديل ومساره، مع الأخذ في الاعتبار ما إذا كان زر التبديل محدّدًا أم لا.

@Composable
fun SwitchWithCustomColors() {
    var checked by remember { mutableStateOf(true) }

    Switch(
        checked = checked,
        onCheckedChange = {
            checked = it
        },
        colors = SwitchDefaults.colors(
            checkedThumbColor = MaterialTheme.colorScheme.primary,
            checkedTrackColor = MaterialTheme.colorScheme.primaryContainer,
            uncheckedThumbColor = MaterialTheme.colorScheme.secondary,
            uncheckedTrackColor = MaterialTheme.colorScheme.secondaryContainer,
        )
    )
}

تظهر عملية التنفيذ هذه على النحو التالي:

مفتاح تبديل يستخدِم المَعلمة colors لعرض مفتاح تبديل بألوان مخصّصة لكلّ من زر التبديل والخلفية
الشكل 5. مفتاح تبديل بألوان مخصّصة

مراجع إضافية