زبانه ها

برگه ها به شما امکان می دهند گروه هایی از محتوای مرتبط را سازماندهی کنید. دو نوع تب وجود دارد:

  • برگه های اصلی : در بالای صفحه محتوا در زیر نوار بالای برنامه قرار می گیرد. آنها مقصدهای محتوای اصلی را نمایش می دهند و باید در مواقعی که فقط به یک مجموعه از برگه ها نیاز است استفاده شوند.
  • برگه های ثانویه : در یک منطقه محتوا برای جداسازی بیشتر محتوای مرتبط و ایجاد سلسله مراتب استفاده می شود. آنها زمانی ضروری هستند که یک صفحه به بیش از یک سطح تب نیاز دارد.
3 برگه اصلی با نمادهای مرتبط (پروازها، سفرها و کاوش) نشان داده می شوند. 2 برگه ثانویه (نمای کلی، مشخصات) بدون نمادهای مرتبط نشان داده شده است.
شکل 1. زبانه های اولیه (1) و زبانه های ثانویه (2).

این صفحه نحوه نمایش برگه های اصلی در برنامه خود را با صفحه های مرتبط و پیمایش اولیه نشان می دهد.

سطح API

برای پیاده سازی زبانه ها از Tab ، PrimaryTabRow و SecondaryTabRow composable استفاده کنید. Tab composable یک برگه مجزا در ردیف را نشان می‌دهد و معمولاً در داخل یک PrimaryTabRow (برای برگه‌های نشانگر اولیه) یا SecondaryTabRow (برای برگه‌های نشانگر ثانویه) استفاده می‌شود.

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 شاخص عددی (موقعیت) ورودی enum Destination.SONGS را دریافت می کند.
  • هنگامی که یک برگه کلیک می شود، navController.navigate(route = destination.route) فراخوانی می شود تا به صفحه مربوطه بروید.
  • لامبدا onClick Tab حالت selectedDestination را به روز می کند تا برگه کلیک شده را به صورت بصری برجسته کند.
  • برای نمایش محتوای واقعی صفحه انتخابی، AppNavHost فراخوانی می‌کند و از navController و startDestination عبور می‌دهد.

نتیجه

تصویر زیر نتیجه قطعه قبلی را نشان می دهد:

3 برگه به ​​صورت افقی در بالای صفحه برنامه مرتب شده اند. برگه ها آهنگ ها، آلبوم و لیست پخش هستند که برگه آهنگ ها انتخاب شده و زیر آن خط کشیده شده است.
شکل 2. 3 برگه- آهنگ ها، آلبوم، و لیست پخش- به صورت افقی مرتب شده اند.

منابع اضافی

،

برگه ها به شما امکان می دهند گروه هایی از محتوای مرتبط را سازماندهی کنید. دو نوع تب وجود دارد:

  • برگه های اصلی : در بالای صفحه محتوا در زیر نوار بالای برنامه قرار می گیرد. آنها مقصدهای محتوای اصلی را نمایش می دهند و باید در مواقعی که فقط به یک مجموعه از برگه ها نیاز است استفاده شوند.
  • برگه های ثانویه : در یک منطقه محتوا برای جداسازی بیشتر محتوای مرتبط و ایجاد سلسله مراتب استفاده می شود. آنها زمانی ضروری هستند که یک صفحه به بیش از یک سطح تب نیاز دارد.
3 برگه اصلی با نمادهای مرتبط (پروازها، سفرها و کاوش) نشان داده می شوند. 2 برگه ثانویه (نمای کلی، مشخصات) بدون نمادهای مرتبط نشان داده شده است.
شکل 1. زبانه های اولیه (1) و زبانه های ثانویه (2).

این صفحه نحوه نمایش برگه های اصلی در برنامه خود را با صفحه های مرتبط و پیمایش اولیه نشان می دهد.

سطح API

برای پیاده سازی زبانه ها از Tab ، PrimaryTabRow و SecondaryTabRow composable استفاده کنید. Tab composable یک برگه مجزا در ردیف را نشان می‌دهد و معمولاً در داخل یک PrimaryTabRow (برای برگه‌های نشانگر اولیه) یا SecondaryTabRow (برای برگه‌های نشانگر ثانویه) استفاده می‌شود.

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 شاخص عددی (موقعیت) ورودی enum Destination.SONGS را دریافت می کند.
  • هنگامی که یک برگه کلیک می شود، navController.navigate(route = destination.route) فراخوانی می شود تا به صفحه مربوطه بروید.
  • لامبدا onClick Tab حالت selectedDestination را به روز می کند تا برگه کلیک شده را به صورت بصری برجسته کند.
  • برای نمایش محتوای واقعی صفحه انتخابی، AppNavHost فراخوانی می‌کند و از navController و startDestination عبور می‌دهد.

نتیجه

تصویر زیر نتیجه قطعه قبلی را نشان می دهد:

3 برگه به ​​صورت افقی در بالای صفحه برنامه مرتب شده اند. برگه ها آهنگ ها، آلبوم و لیست پخش هستند که برگه آهنگ ها انتخاب شده و زیر آن خط کشیده شده است.
شکل 2. 3 برگه- آهنگ ها، آلبوم، و لیست پخش- به صورت افقی مرتب شده اند.

منابع اضافی

،

برگه ها به شما امکان می دهند گروه هایی از محتوای مرتبط را سازماندهی کنید. دو نوع تب وجود دارد:

  • برگه های اصلی : در بالای صفحه محتوا در زیر نوار بالای برنامه قرار می گیرد. آنها مقصدهای محتوای اصلی را نمایش می دهند و باید در مواقعی که فقط به یک مجموعه از برگه ها نیاز است استفاده شوند.
  • برگه های ثانویه : در یک منطقه محتوا برای جداسازی بیشتر محتوای مرتبط و ایجاد سلسله مراتب استفاده می شود. آنها زمانی ضروری هستند که یک صفحه به بیش از یک سطح تب نیاز دارد.
3 برگه اصلی با نمادهای مرتبط (پروازها، سفرها و کاوش) نشان داده می شوند. 2 برگه ثانویه (نمای کلی، مشخصات) بدون نمادهای مرتبط نشان داده شده است.
شکل 1. زبانه های اولیه (1) و زبانه های ثانویه (2).

این صفحه نحوه نمایش برگه های اصلی در برنامه خود را با صفحه های مرتبط و پیمایش اولیه نشان می دهد.

سطح API

برای پیاده سازی زبانه ها از Tab ، PrimaryTabRow و SecondaryTabRow composable استفاده کنید. Tab composable یک برگه مجزا در ردیف را نشان می‌دهد و معمولاً در داخل یک PrimaryTabRow (برای برگه‌های نشانگر اولیه) یا SecondaryTabRow (برای برگه‌های نشانگر ثانویه) استفاده می‌شود.

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 شاخص عددی (موقعیت) ورودی enum Destination.SONGS را دریافت می کند.
  • هنگامی که یک برگه کلیک می شود، navController.navigate(route = destination.route) فراخوانی می شود تا به صفحه مربوطه بروید.
  • لامبدا onClick Tab حالت selectedDestination را به روز می کند تا برگه کلیک شده را به صورت بصری برجسته کند.
  • برای نمایش محتوای واقعی صفحه انتخابی، AppNavHost فراخوانی می‌کند و از navController و startDestination عبور می‌دهد.

نتیجه

تصویر زیر نتیجه قطعه قبلی را نشان می دهد:

3 برگه به ​​صورت افقی در بالای صفحه برنامه مرتب شده اند. برگه ها آهنگ ها، آلبوم و لیست پخش هستند که برگه آهنگ ها انتخاب شده و زیر آن خط کشیده شده است.
شکل 2. 3 برگه- آهنگ ها، آلبوم، و لیست پخش- به صورت افقی مرتب شده اند.

منابع اضافی

،

برگه ها به شما امکان می دهند گروه هایی از محتوای مرتبط را سازماندهی کنید. دو نوع تب وجود دارد:

  • برگه های اصلی : در بالای صفحه محتوا در زیر نوار بالای برنامه قرار می گیرد. آنها مقصدهای محتوای اصلی را نمایش می دهند و باید در مواقعی که فقط به یک مجموعه از برگه ها نیاز است استفاده شوند.
  • برگه های ثانویه : در یک منطقه محتوا برای جداسازی بیشتر محتوای مرتبط و ایجاد سلسله مراتب استفاده می شود. آنها زمانی ضروری هستند که یک صفحه به بیش از یک سطح تب نیاز دارد.
3 برگه اصلی با نمادهای مرتبط (پروازها، سفرها و کاوش) نشان داده می شوند. 2 برگه ثانویه (نمای کلی، مشخصات) بدون نمادهای مرتبط نشان داده شده است.
شکل 1. زبانه های اولیه (1) و زبانه های ثانویه (2).

این صفحه نحوه نمایش برگه های اصلی در برنامه خود را با صفحه های مرتبط و پیمایش اولیه نشان می دهد.

سطح API

برای پیاده سازی زبانه ها از Tab ، PrimaryTabRow و SecondaryTabRow composable استفاده کنید. Tab composable یک برگه مجزا در ردیف را نشان می‌دهد و معمولاً در داخل یک PrimaryTabRow (برای برگه‌های نشانگر اولیه) یا SecondaryTabRow (برای برگه‌های نشانگر ثانویه) استفاده می‌شود.

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 شاخص عددی (موقعیت) ورودی enum Destination.SONGS را دریافت می کند.
  • هنگامی که یک برگه کلیک می شود، navController.navigate(route = destination.route) فراخوانی می شود تا به صفحه مربوطه بروید.
  • لامبدا onClick Tab حالت selectedDestination را به روز می کند تا برگه کلیک شده را به صورت بصری برجسته کند.
  • برای نمایش محتوای واقعی صفحه انتخابی، AppNavHost فراخوانی می‌کند و از navController و startDestination عبور می‌دهد.

نتیجه

تصویر زیر نتیجه قطعه قبلی را نشان می دهد:

3 برگه به ​​صورت افقی در بالای صفحه برنامه مرتب شده اند. برگه ها آهنگ ها، آلبوم و لیست پخش هستند که برگه آهنگ ها انتخاب شده و زیر آن خط کشیده شده است.
شکل 2. 3 برگه- آهنگ ها، آلبوم، و لیست پخش- به صورت افقی مرتب شده اند.

منابع اضافی