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,
        )
    )
}

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

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

مراجع إضافية