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. مفتاح تبديل بألوان مخصّصة

مراجع إضافية