يمكنك استخدام التلميحات لإضافة سياق إلى زر أو عنصر آخر في واجهة المستخدم. هناك نوعان من التلميحات:
- التلميحات البسيطة: تصف عناصر أو إجراءات أزرار الرموز.
- التلميحات المنسّقة: تقدّم مزيدًا من التفاصيل، مثل وصف قيمة ميزة. يمكن أن تتضمّن أيضًا عنوانًا ورابطًا وأزرارًا اختيارية.
واجهة برمجة التطبيقات
يمكنك استخدام العنصر القابل للإنشاء TooltipBox لتنفيذ التلميحات في تطبيقك.
يمكنك التحكّم في مظهر TooltipBox باستخدام المَعلمات الرئيسية التالية:
positionProvider: يضع التلميح بالنسبة إلى محتوى العنصر الأساسي. عادةً ما تستخدم موفّر موضع تلقائي منTooltipDefaults، أو يمكنك تقديم موفّر خاص بك إذا كنت بحاجة إلى منطق تحديد موضع مخصّص.tooltip: العنصر القابل للإنشاء الذي يحتوي على محتوى التلميح. عادةً ما تستخدم العنصرَين القابلَين للإنشاءPlainTooltipأوRichTooltip.- استخدِم
PlainTooltipلوصف عناصر أو إجراءات أزرار الرموز. - استخدِم
RichTooltipلتقديم مزيد من التفاصيل، مثل وصف قيمة ميزة. يمكن أن تتضمّن التلميحات المنسّقة عنوانًا ورابطًا وأزرارًا اختيارية.
- استخدِم
state: عنصر الاحتفاظ بالحالة الذي يحتوي على منطق واجهة المستخدم وحالة العنصر لهذا التلميح.content: المحتوى القابل للإنشاء الذي يتم ربط التلميح به.
عرض تلميح بسيط
استخدِم تلميحًا بسيطًا لوصف عنصر في واجهة المستخدم بإيجاز. تعرض قصاصة الرمز هذه تلميحًا بسيطًا أعلى زر رمز، يحمل التصنيف "الإضافة إلى المحتوى المفضّل":
@Composable fun PlainTooltipExample( modifier: Modifier = Modifier, plainTooltipText: String = "Add to favorites" ) { TooltipBox( modifier = modifier, positionProvider = TooltipDefaults.rememberPlainTooltipPositionProvider(), tooltip = { PlainTooltip { Text(plainTooltipText) } }, state = rememberTooltipState() ) { IconButton(onClick = { /* Do something... */ }) { Icon( imageVector = Icons.Filled.Favorite, contentDescription = "Add to favorites" ) } } }
النقاط الرئيسية حول الرمز
- ينشئ
TooltipBoxتلميحًا يتضمّن النص "الإضافة إلى المحتوى المفضّل".TooltipDefaults.rememberPlainTooltipPositionProvider()يوفّر تحديد الموضع التلقائي للتلميحات البسيطة.tooltipهي دالة لامدا تحدّد محتوى التلميح باستخدام العنصر القابل للإنشاءPlainTooltip.- يعرض
Text(plainTooltipText)النص داخل التلميح. tooltipStateتتحكّم في حالة التلميح.
- ينشئ
IconButtonزرًا قابلاً للنقر يتضمّن رمزًا.- يعرض
Icon(...)رمز قلب داخل الزر. - عندما يتفاعل المستخدم مع
IconButton، يعرضTooltipBoxالتلميح الذي يتضمّن النص "الإضافة إلى المحتوى المفضّل". استنادًا إلى الجهاز، يمكن للمستخدمين عرض التلميح بالطرق التالية: - توجيه مؤشر الماوس فوق الرمز
- الضغط مع الاستمرار على الرمز على جهاز جوّال
- يعرض
النتيجة
ينتج عن هذا المثال تلميح بسيط أعلى رمز:
عرض تلميح منسّق
استخدِم تلميحًا منسّقًا لتقديم سياق إضافي حول عنصر في واجهة المستخدم. ينشئ هذا المثال تلميحًا منسّقًا متعدد الأسطر يتضمّن عنوانًا مرتبطًا بـ Icon:
@Composable fun RichTooltipExample( modifier: Modifier = Modifier, richTooltipSubheadText: String = "Rich Tooltip", richTooltipText: String = "Rich tooltips support multiple lines of informational text." ) { TooltipBox( modifier = modifier, positionProvider = TooltipDefaults.rememberRichTooltipPositionProvider(), tooltip = { RichTooltip( title = { Text(richTooltipSubheadText) } ) { Text(richTooltipText) } }, state = rememberTooltipState() ) { IconButton(onClick = { /* Icon button's click event */ }) { Icon( imageVector = Icons.Filled.Info, contentDescription = "Show more information" ) } } }
النقاط الرئيسية حول الرمز
- يتعامل
TooltipBoxمع أدوات الاستماع إلى الأحداث لتفاعلات المستخدمين ويعدِّلTooltipStateوفقًا لذلك. عندما تشيرTooltipStateإلى ضرورة عرض التلميح، يتم تنفيذ دالة لامدا الخاصة بالتلميح، ويعرضTooltipBoxالعنصر القابل للإنشاءRichTooltip. يعملTooltipBoxكعنصر أساسي وحاوية لكل من المحتوى والتلميح.- في هذه الحالة، يكون المحتوى هو مكوّن
IconButton، الذي يوفّر سلوك الإجراء القابل للنقر. عند الضغط مع الاستمرار (على الأجهزة التي تعمل باللمس) أو توجيه مؤشر الماوس فوق أي مكان في محتوىTooltipBox، سيظهر التلميح لعرض مزيد من المعلومات.
- في هذه الحالة، يكون المحتوى هو مكوّن
- يحدّد العنصر القابل للإنشاء
RichTooltipمحتوى التلميح، بما في ذلك العنوان ونص المحتوى.TooltipDefaults.rememberRichTooltipPositionProvider()يوفّر معلومات تحديد الموضع للتلميحات المنسّقة.
النتيجة
ينتج عن هذا المثال تلميح منسّق يتضمّن عنوانًا مرتبطًا برمز معلومات:
تخصيص تلميح منسّق
يعرض مقتطف الرمز هذا تلميحًا منسّقًا يتضمّن عنوانًا وإجراءات مخصّصة وعلامة إقحام (سهم) مخصّصة تظهر أعلى زر رمز الكاميرا:
@Composable fun AdvancedRichTooltipExample( modifier: Modifier = Modifier, richTooltipSubheadText: String = "Custom Rich Tooltip", richTooltipText: String = "Rich tooltips support multiple lines of informational text.", richTooltipActionText: String = "Dismiss" ) { val tooltipState = rememberTooltipState() val coroutineScope = rememberCoroutineScope() TooltipBox( modifier = modifier, positionProvider = TooltipDefaults.rememberRichTooltipPositionProvider(), tooltip = { RichTooltip( title = { Text(richTooltipSubheadText) }, action = { Row { TextButton(onClick = { coroutineScope.launch { tooltipState.dismiss() } }) { Text(richTooltipActionText) } } }, ) { Text(richTooltipText) } }, state = tooltipState ) { IconButton(onClick = { coroutineScope.launch { tooltipState.show() } }) { Icon( imageVector = Icons.Filled.Camera, contentDescription = "Open camera" ) } } }
النقاط الرئيسية حول الرمز
- يعرض
RichTooltipتلميحًا يتضمّن عنوانًا وإجراء إغلاق. - عند تفعيل التلميح، إما عن طريق الضغط مع الاستمرار أو توجيه مؤشر الماوس فوق محتوى
TooltipBox، يظهر التلميح لمدة ثانية واحدة تقريبًا. يمكنك إغلاق هذا التلميح إما عن طريق النقر في أي مكان آخر على الشاشة أو باستخدام زر إجراء الإغلاق. - عند تنفيذ إجراء الإغلاق، يبدأ النظام روتينًا فرعيًا لاستدعاء
tooltipState.dismiss. يؤكّد ذلك أنّه لا يتم حظر تنفيذ الإجراء أثناء عرض التلميح. onClick = coroutineScope.launch { tooltipState.show() } }يبدأ روتينًا فرعيًا لعرض التلميح يدويًا باستخدامtooltipState.show.- تسمح المَعلمة
actionبإضافة عناصر تفاعلية إلى التلميح، مثل زر. - تعدِّل المَعلمة
caretSizeحجم سهم التلميح.
النتيجة
ينتج عن هذا المثال ما يلي:
مراجع إضافية
- نظام التصميم المتعدد الأبعاد: التلميحات