برگهها به شما امکان میدهند گروههای محتوای مرتبط را سازماندهی کنید. دو نوع برگه وجود دارد:
- برگههای اصلی: در بالای قاب محتوا زیر نوار برنامه برتر قرار میگیرند. این زبانهها مقصدهای اصلی محتوا را نمایش میدهند و باید زمانی استفاده شوند که فقط یک مجموعه زبانه لازم است.
- برگههای ثانویه: در ناحیه محتوا برای جدا کردن بیشتر محتوای مرتبط و ایجاد سلسلهمراتب استفاده میشود. وقتی صفحهای به بیشاز یک سطح برگه نیاز دارد، این برگهها ضروری هستند.
این صفحه نشان میدهد که چگونه برگههای اصلی را در برنامه خود با صفحههای مرتبط و ناوبری پایه نمایش دهید.
سطح میانای برنامهسازی کاربردی
برای پیادهسازی برگهها، از ترکیبپذیرهای Tab، PrimaryTabRow، و SecondaryTabRow استفاده کنید. Tab composable represents an individual tab within the
row, and is typically used inside of a PrimaryTabRow (for primary indicator
tabs) or SecondaryTabRow (for secondary indicator tabs).
Tab شامل پارامترهای کلیدی زیر است:
selected: تعیین میکند که آیا زبانه فعلی بهصورت بصری برجسته شده است یا نه.onClick(): تابع لامبدا الزامی که کنشی را که باید هنگام کلیک کردن کاربر روی برگه انجام شود تعریف میکند. اینجا جایی است که معمولاً رویدادهای پیمایش را مدیریت میکنید، وضعیت برگه انتخابشده را بهروز میکنید، یا محتوای مربوطه را بار میکنید.-
text: نوشتار را در برگه نمایش میدهد. اختیاری. -
icon: نمادی را در زبانه نمایش میدهد. اختیاری. enabled: کنترل میکند که آیا برگه فعال است و میتوان با آن تعامل داشت یا نه. اگر روی false تنظیم شود، برگه در حالت غیرفعال ظاهر میشود و به کلیکها پاسخ نمیدهد.
مثال: پیمایش مبتنی بر برگه
قطعه کد زیر نوار پیمایش بالایی را با برگههایی برای پیمایش بین صفحههای مختلف در برنامه پیادهسازی میکند:
@Composable fun NavigationTabExample(modifier: Modifier = Modifier) { val navController = rememberNavController() val startDestination = Destination.SONGS var selectedDestination by rememberSaveable { mutableIntStateOf(startDestination.ordinal) } Scaffold(modifier = modifier) { contentPadding -> PrimaryTabRow(selectedTabIndex = selectedDestination, modifier = Modifier.padding(contentPadding)) { Destination.entries.forEachIndexed { index, destination -> Tab( selected = selectedDestination == index, onClick = { navController.navigate(route = destination.route) selectedDestination = index }, text = { Text( text = destination.label, maxLines = 2, overflow = TextOverflow.Ellipsis ) } ) } } AppNavHost(navController, startDestination) } }
نکات کلیدی
PrimaryTabRowردیف افقیای از برگهها را نمایش میدهد که هر برگه با یکDestinationمطابقت دارد.val navController = rememberNavController()نمونهای ازNavHostControllerرا ایجاد میکند و بهخاطر میسپارد که پیمایش را درNavHostمدیریت میکند.-
var selectedDestination by rememberSaveable { mutableIntStateOf(startDestination.ordinal) }وضعیت برگه انتخابشده را مدیریت میکند.-
startDestination.ordinalنمایه عددی (موقعیت) ورودی شمارشیDestination.SONGSرا دریافت میکند.
-
- وقتی روی برگهای کلیک میکنید،
onClicklambdanavController.navigate(route = destination.route)را فراخوانی میکند تا به صفحه مربوطه پیمایش کند. -
onClicklambda ازTab، وضعیتselectedDestinationرا بهروز میکند تا برگه کلیکشده را بهصورت بصری برجسته کند. - این تابع، ترکیبپذیر
AppNavHostرا فراخوانی میکند وnavControllerوstartDestinationرا ارسال میکند تا محتوای واقعی صفحه انتخابشده را نمایش دهد.
نتیجه
تصویر زیر نتیجه قطعه کد قبلی را نشان میدهد:
.png?hl=fa)