Skip to content

Commit 2b9909e

Browse files
fix: constrain NavigationRail width to prevent long text from breaking layout
Limit NavigationRail max width to 80dp and use TextOverflow.Ellipsis for labels, preventing long translations (e.g. Spanish, Vietnamese, Russian) from pushing the sidebar too wide on tablets.
1 parent bc6d3bb commit 2b9909e

1 file changed

Lines changed: 50 additions & 34 deletions

File tree

app/src/main/java/me/bmax/apatch/ui/MainActivity.kt

Lines changed: 50 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -743,42 +743,58 @@ class MainActivity : AppCompatActivity() {
743743
)
744744

745745
Box(modifier = Modifier.fillMaxSize()) {
746-
CompositionLocalProvider(
747-
LocalSnackbarHost provides snackBarHostState,
748-
LocalScrollState provides if (isFloatingMode) ScrollState(
749-
isScrollingDown = isScrollingDown,
750-
scrollOffset = scrollOffset,
751-
previousScrollOffset = previousScrollOffset
752-
) else null,
753-
LocalBottomBarVisible provides bottomBarVisibleState,
754-
LocalIsFloatingNavMode provides isFloatingMode
755-
) {
756-
DestinationsNavHost(
757-
modifier = Modifier
758-
.fillMaxSize()
759-
.then(
760-
if (useNavigationRail) Modifier.padding(start = 80.dp) else Modifier
761-
)
762-
.navBarLiquefiable(
763-
if (shouldExposeContentToLiquid) floatingLiquidState else null
764-
)
765-
.then(
766-
when {
767-
isFloatingMode -> Modifier.nestedScroll(scrollConnection)
768-
!useNavigationRail -> Modifier.padding(bottom = 80.dp)
769-
else -> Modifier
770-
}
771-
),
772-
navGraph = NavGraphs.root,
773-
navController = navController,
774-
engine = rememberNavHostEngine(navHostContentAlignment = Alignment.TopCenter),
775-
defaultTransitions = navTransitions
746+
val baseContentModifier = Modifier
747+
.navBarLiquefiable(
748+
if (shouldExposeContentToLiquid) floatingLiquidState else null
749+
)
750+
.then(
751+
when {
752+
isFloatingMode -> Modifier.nestedScroll(scrollConnection)
753+
!useNavigationRail -> Modifier.padding(bottom = 80.dp)
754+
else -> Modifier
755+
}
776756
)
777-
}
778757

779758
if (useNavigationRail) {
780-
Box(modifier = Modifier.align(Alignment.CenterStart)) {
759+
Row(modifier = Modifier.fillMaxSize()) {
781760
NavigationRailBar(navController)
761+
CompositionLocalProvider(
762+
LocalSnackbarHost provides snackBarHostState,
763+
LocalScrollState provides if (isFloatingMode) ScrollState(
764+
isScrollingDown = isScrollingDown,
765+
scrollOffset = scrollOffset,
766+
previousScrollOffset = previousScrollOffset
767+
) else null,
768+
LocalBottomBarVisible provides bottomBarVisibleState,
769+
LocalIsFloatingNavMode provides isFloatingMode
770+
) {
771+
DestinationsNavHost(
772+
modifier = Modifier.weight(1f).then(baseContentModifier),
773+
navGraph = NavGraphs.root,
774+
navController = navController,
775+
engine = rememberNavHostEngine(navHostContentAlignment = Alignment.TopCenter),
776+
defaultTransitions = navTransitions
777+
)
778+
}
779+
}
780+
} else {
781+
CompositionLocalProvider(
782+
LocalSnackbarHost provides snackBarHostState,
783+
LocalScrollState provides if (isFloatingMode) ScrollState(
784+
isScrollingDown = isScrollingDown,
785+
scrollOffset = scrollOffset,
786+
previousScrollOffset = previousScrollOffset
787+
) else null,
788+
LocalBottomBarVisible provides bottomBarVisibleState,
789+
LocalIsFloatingNavMode provides isFloatingMode
790+
) {
791+
DestinationsNavHost(
792+
modifier = Modifier.fillMaxSize().then(baseContentModifier),
793+
navGraph = NavGraphs.root,
794+
navController = navController,
795+
engine = rememberNavHostEngine(navHostContentAlignment = Alignment.TopCenter),
796+
defaultTransitions = navTransitions
797+
)
782798
}
783799
}
784800

@@ -1478,7 +1494,7 @@ private fun NavigationRailBar(navController: NavHostController) {
14781494
label = {
14791495
Text(
14801496
text = stringResource(destination.label),
1481-
overflow = TextOverflow.Visible,
1497+
overflow = TextOverflow.Ellipsis,
14821498
maxLines = 1,
14831499
softWrap = false
14841500
)
@@ -1487,7 +1503,7 @@ private fun NavigationRailBar(navController: NavHostController) {
14871503
)
14881504
}
14891505
}
1490-
1506+
14911507
Spacer(Modifier.weight(1f))
14921508
}
14931509
}

0 commit comments

Comments
 (0)