Sekmeler, ilgili içerik gruplarını düzenlemenize olanak tanır. İki tür sekme vardır:
- Birincil sekmeler: İçerik bölmesinin üst kısmına, üst uygulama çubuğunun altına yerleştirilir. Ana içerik hedeflerini gösterirler ve yalnızca bir sekme grubu gerektiğinde kullanılmalıdır.
- İkincil sekmeler: İlgili içeriği daha da ayırmak ve hiyerarşi oluşturmak için bir içerik alanında kullanılır. Bir ekranda birden fazla sekme düzeyi gerektiğinde gereklidir.

Bu sayfada, uygulamanızda birincil sekmelerin ilgili ekranlarla ve temel gezinmeyle nasıl gösterileceği gösterilmektedir.
API yüzeyi
Sekmeleri uygulamak için Tab
, PrimaryTabRow
ve SecondaryTabRow
bileşenlerini kullanın. Tab
bileşimi, satırdaki tek bir sekmeyi temsil eder ve genellikle bir PrimaryTabRow
(birincil gösterge sekmeleri için) veya SecondaryTabRow
(ikincil gösterge sekmeleri için) içinde kullanılır.
Tab
aşağıdaki temel parametreleri içerir:
selected
: Geçerli sekmenin görsel olarak vurgulanıp vurgulanmayacağını belirler.onClick()
: Kullanıcı sekmeyi tıkladığında gerçekleştirilecek işlemi tanımlayan zorunlu bir lambda işlevi. Genellikle gezinme etkinliklerini burada ele alır, seçili sekme durumunu günceller veya ilgili içeriği yüklersiniz.text
: Sekmedeki metni gösterir. İsteğe bağlıdır.icon
: Sekmede bir simge gösterir. İsteğe bağlıdır.enabled
: Sekmenin etkin olup olmadığını ve sekmeyle etkileşim kurulup kurulamayacağını kontrol eder. Yanlış değerine ayarlanırsa sekme devre dışı durumda gösterilir ve tıklamalara yanıt vermez.
Örnek: Sekmeye dayalı gezinme
Aşağıdaki snippet, bir uygulamadaki farklı ekranlar arasında gezinmek için sekmeler içeren bir üst gezinme çubuğu uygular:
@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) } }
Önemli noktalar
PrimaryTabRow
, her sekme birDestination
'a karşılık gelecek şekilde yatay bir sekme satırı gösterir.val navController = rememberNavController()
,NavHost
içindeki gezinmeyi yöneten birNavHostController
örneği oluşturup hatırlar.var selectedDestination by rememberSaveable { mutableIntStateOf(startDestination.ordinal) }
, şu anda seçili sekmenin durumunu yönetir.startDestination.ordinal
,Destination.SONGS
enum girişinin sayısal dizinini (konumunu) alır.
- Bir sekme tıklandığında, ilgili ekrana gitmek için
navController.navigate(route = destination.route)
çağrılır. Tab
işlevininonClick
lambdası, tıklanan sekmeyi görsel olarak vurgulamak içinselectedDestination
durumunu günceller.- Seçilen ekranın asıl içeriğini görüntülemek için
AppNavHost
bileşenini çağırır venavController
ilestartDestination
parametrelerini iletir.
Sonuç
Aşağıdaki resimde önceki snippet'in sonucu gösterilmektedir:
.png?hl=tr)