Destek bölmesinin standart düzeni, kullanıcının dikkatini uygulamanızın ana uygun destekleyici içerikler de gösterebilirsiniz. Örneğin, içerik bölmesinde yakın zamanda izlenen bir filme ilişkin bilgiler gösterilirken, bölmesi, benzer veya aynı temaya sahip diğer filmlerin listesini görüntüler ya da başrol oyuncuları gibi. Destek bölmesi hakkında daha fazla bilgi standart düzende, bkz. Materyal 3 destekleyici bölme yönergeleri.
Destekleyici bölme uygulayın
SupportingPaneScaffold
en fazla üç birimden oluşur
ana bölme, destekleyici bölme ve isteğe bağlı ekstra bölme. Yapı
üç bölmeye pencere alanı ayırmaya ilişkin tüm hesaplamaları işler. Şu tarihte:
büyük ekranlarda, iskelet ana bölmeyi, destekleyici bölmesi açık bir şekilde
görebilirsiniz. Küçük ekranlarda ise iskele, ana veya destekleyici paneli tam ekranda gösterir.
Bağımlılıkları ekleme
SupportingPaneScaffold
şunun parçasıdır:
Materyal 3 uyarlanabilir düzen kitaplığı.
Uygulamanızın veya modülünüzün build.gradle
dosyasına aşağıdaki üç ilgili bağımlılığı ekleyin:
Kotlin
implementation("androidx.compose.material3.adaptive:adaptive") implementation("androidx.compose.material3.adaptive:adaptive-layout") implementation("androidx.compose.material3.adaptive:adaptive-navigation")
Groovy
implementation 'androidx.compose.material3.adaptive:adaptive' implementation 'androidx.compose.material3.adaptive:adaptive-layout' implementation 'androidx.compose.material3.adaptive:adaptive-navigation'
- uyarlanabilir: Örneğin,
HingeInfo
vePosture
- udaptive-layout: Uyarlanabilir düzenler.
SupportingPaneScaffold
- uyarlanabilir-gezinme: İçinde gezinme ve bölmeler arasında
Kılavuz ve iskele oluşturma
Küçük pencerelerde aynı anda yalnızca bir bölme görüntülenir. Bu nedenle,
İki yol arasında geçiş yapmak için ThreePaneScaffoldNavigator
bölmeler. Kılavuzun
rememberSupportingPaneScaffoldNavigator
.
Geri gitme hareketlerini işlemek için aşağıdakileri kontrol eden bir BackHandler
kullanın:
canNavigateBack()
ve aramalar
navigateBack()
:
val navigator = rememberSupportingPaneScaffoldNavigator() BackHandler(navigator.canNavigateBack()) { navigator.navigateBack() }
Yapı, bir PaneScaffoldDirective
gerektirir.
ekranın nasıl bölüneceğini ve ne kadar boşluk kullanılacağını kontrol eder.
ThreePaneScaffoldValue
, güncel bilgileri sağlar
durumu (genişletilmiş veya gizli olup olmadıkları gibi). Varsayılan davranış için sırasıyla gezginin scaffoldDirective
ve scaffoldValue
öğelerini kullanın:
SupportingPaneScaffold( directive = navigator.scaffoldDirective, value = navigator.scaffoldValue, mainPane = { /*...*/ }, supportingPane = { /*...*/ }, )
Ana bölme ve destek bölmesi, içeriğinizi barındıran composable'lardır. Gezinme sırasında varsayılan bölme animasyonlarını uygulamak için AnimatedPane
simgesini kullanın. Destekleyici bölmenin gizli olup olmadığını kontrol etmek için iskelet değerini kullanın. Gizliyse destekleyici bölmeyi görüntülemek için navigateTo(ThreePaneScaffoldRole.Secondary)
değerini çağıran bir düğme görüntüleyin.
Yapı yapısının eksiksiz bir şekilde uygulanması aşağıdaki gibidir:
val navigator = rememberSupportingPaneScaffoldNavigator() BackHandler(navigator.canNavigateBack()) { navigator.navigateBack() } SupportingPaneScaffold( directive = navigator.scaffoldDirective, value = navigator.scaffoldValue, mainPane = { AnimatedPane(modifier = Modifier.safeContentPadding()) { // Main pane content if (navigator.scaffoldValue[SupportingPaneScaffoldRole.Supporting] == PaneAdaptedValue.Hidden) { Button( modifier = Modifier.wrapContentSize(), onClick = { navigator.navigateTo(SupportingPaneScaffoldRole.Supporting) } ) { Text("Show supporting pane") } } else { Text("Supporting pane is shown") } } }, supportingPane = { AnimatedPane(modifier = Modifier.safeContentPadding()) { // Supporting pane content Text("Supporting pane") } }, )
Bölme composable'larını çıkar
SupportingPaneScaffold
içindeki ayrı ayrı bölmeleri kendi bölmelerine çıkarın
composable'ları kullanıma sunduk. Tekliflerinizi otomatikleştirmek ve optimize etmek için
AnimatedPane
erişimi için ThreePaneScaffoldScope
varsayılan animasyonları
kullanmak istiyorsunuz:
@Composable fun ThreePaneScaffoldScope.MainPane( shouldShowSupportingPaneButton: Boolean, onNavigateToSupportingPane: () -> Unit, modifier: Modifier = Modifier, ) { AnimatedPane(modifier = modifier.safeContentPadding()) { // Main pane content if (shouldShowSupportingPaneButton) { Button(onClick = onNavigateToSupportingPane) { Text("Show supporting pane") } } else { Text("Supporting pane is shown") } } } @Composable fun ThreePaneScaffoldScope.SupportingPane( modifier: Modifier = Modifier, ) { AnimatedPane(modifier = modifier.safeContentPadding()) { // Supporting pane content Text("This is the supporting pane") } }
Bölmeleri composable'lara çıkarmak,
SupportingPaneScaffold
(aşağıdakileri tam uygulama ile karşılaştırın
bakın):
val navigator = rememberSupportingPaneScaffoldNavigator() BackHandler(navigator.canNavigateBack()) { navigator.navigateBack() } SupportingPaneScaffold( directive = navigator.scaffoldDirective, value = navigator.scaffoldValue, mainPane = { MainPane( shouldShowSupportingPaneButton = navigator.scaffoldValue.secondary == PaneAdaptedValue.Hidden, onNavigateToSupportingPane = { navigator.navigateTo(ThreePaneScaffoldRole.Secondary) } ) }, supportingPane = { SupportingPane() }, )