Refactor(TopAppBar): Optimize size of TopAppBar
This commit is contained in:
@@ -7,12 +7,12 @@ import androidx.compose.foundation.layout.WindowInsets
|
|||||||
import androidx.compose.foundation.layout.WindowInsetsSides
|
import androidx.compose.foundation.layout.WindowInsetsSides
|
||||||
import androidx.compose.foundation.layout.consumeWindowInsets
|
import androidx.compose.foundation.layout.consumeWindowInsets
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
|
import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.only
|
import androidx.compose.foundation.layout.only
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.safeDrawing
|
import androidx.compose.foundation.layout.safeDrawing
|
||||||
import androidx.compose.foundation.layout.safeDrawingPadding
|
import androidx.compose.foundation.layout.safeDrawingPadding
|
||||||
import androidx.compose.foundation.layout.windowInsetsPadding
|
import androidx.compose.foundation.layout.windowInsetsPadding
|
||||||
import androidx.compose.material3.BottomAppBar
|
|
||||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||||
import androidx.compose.material3.Icon
|
import androidx.compose.material3.Icon
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
@@ -35,6 +35,8 @@ import androidx.compose.ui.Modifier
|
|||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.input.nestedscroll.nestedScroll
|
import androidx.compose.ui.input.nestedscroll.nestedScroll
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
|
import androidx.compose.ui.text.style.TextOverflow
|
||||||
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||||
import androidx.navigation.NavDestination
|
import androidx.navigation.NavDestination
|
||||||
import androidx.navigation.NavDestination.Companion.hierarchy
|
import androidx.navigation.NavDestination.Companion.hierarchy
|
||||||
@@ -129,13 +131,11 @@ fun OxygenApp(appState: OxygenAppState) {
|
|||||||
AnimatedVisibility(
|
AnimatedVisibility(
|
||||||
visible = appState.shouldShowBottomBar && destination != null
|
visible = appState.shouldShowBottomBar && destination != null
|
||||||
) {
|
) {
|
||||||
BottomAppBar {
|
OxygenBottomBar(
|
||||||
OxygenBottomBar(
|
destinations = appState.topLevelDestinations,
|
||||||
destinations = appState.topLevelDestinations,
|
currentDestination = appState.currentDestination,
|
||||||
currentDestination = appState.currentDestination,
|
onNavigateToDestination = appState::navigateToTopLevelDestination
|
||||||
onNavigateToDestination = appState::navigateToTopLevelDestination
|
)
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
) { padding ->
|
) { padding ->
|
||||||
@@ -170,7 +170,13 @@ fun OxygenApp(appState: OxygenAppState) {
|
|||||||
OxygenTopAppBar(
|
OxygenTopAppBar(
|
||||||
scrollBehavior = topAppBarScrollBehavior,
|
scrollBehavior = topAppBarScrollBehavior,
|
||||||
title = {
|
title = {
|
||||||
destination?.let { Text(text = stringResource(destination.titleTextId)) }
|
destination?.let {
|
||||||
|
Text(
|
||||||
|
text = stringResource(destination.titleTextId),
|
||||||
|
maxLines = 1,
|
||||||
|
overflow = TextOverflow.Ellipsis
|
||||||
|
)
|
||||||
|
}
|
||||||
},
|
},
|
||||||
navigationIcon = OxygenIcons.Search,
|
navigationIcon = OxygenIcons.Search,
|
||||||
navigationIconContentDescription = stringResource(R.string.feature_settings_top_app_bar_navigation_icon_description),
|
navigationIconContentDescription = stringResource(R.string.feature_settings_top_app_bar_navigation_icon_description),
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ import androidx.compose.ui.input.nestedscroll.nestedScroll
|
|||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.text.font.FontWeight
|
import androidx.compose.ui.text.font.FontWeight
|
||||||
|
import androidx.compose.ui.text.style.TextOverflow
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import top.fatweb.oxygen.toolbox.R
|
import top.fatweb.oxygen.toolbox.R
|
||||||
@@ -96,7 +97,11 @@ internal fun AboutScreen(
|
|||||||
OxygenTopAppBar(
|
OxygenTopAppBar(
|
||||||
scrollBehavior = topAppBarScrollBehavior,
|
scrollBehavior = topAppBarScrollBehavior,
|
||||||
title = {
|
title = {
|
||||||
Text(text = stringResource(R.string.feature_settings_more_about))
|
Text(
|
||||||
|
text = stringResource(R.string.feature_settings_more_about),
|
||||||
|
maxLines = 1,
|
||||||
|
overflow = TextOverflow.Ellipsis
|
||||||
|
)
|
||||||
},
|
},
|
||||||
navigationIcon = OxygenIcons.Back,
|
navigationIcon = OxygenIcons.Back,
|
||||||
navigationIconContentDescription = stringResource(R.string.core_back),
|
navigationIconContentDescription = stringResource(R.string.core_back),
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ import androidx.compose.ui.input.nestedscroll.nestedScroll
|
|||||||
import androidx.compose.ui.platform.LocalConfiguration
|
import androidx.compose.ui.platform.LocalConfiguration
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
|
import androidx.compose.ui.text.style.TextOverflow
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.hilt.navigation.compose.hiltViewModel
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||||
@@ -132,7 +133,11 @@ internal fun LibrariesScreen(
|
|||||||
OxygenTopAppBar(
|
OxygenTopAppBar(
|
||||||
scrollBehavior = topAppBarScrollBehavior,
|
scrollBehavior = topAppBarScrollBehavior,
|
||||||
title = {
|
title = {
|
||||||
Text(text = stringResource(R.string.feature_settings_open_source_license))
|
Text(
|
||||||
|
text = stringResource(R.string.feature_settings_open_source_license),
|
||||||
|
maxLines = 1,
|
||||||
|
overflow = TextOverflow.Ellipsis
|
||||||
|
)
|
||||||
},
|
},
|
||||||
navigationIcon = OxygenIcons.Back,
|
navigationIcon = OxygenIcons.Back,
|
||||||
navigationIconContentDescription = stringResource(R.string.core_back),
|
navigationIconContentDescription = stringResource(R.string.core_back),
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ import androidx.compose.ui.platform.LocalDensity
|
|||||||
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
|
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.text.input.ImeAction
|
import androidx.compose.ui.text.input.ImeAction
|
||||||
|
import androidx.compose.ui.text.style.TextOverflow
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import top.fatweb.oxygen.toolbox.R
|
import top.fatweb.oxygen.toolbox.R
|
||||||
import top.fatweb.oxygen.toolbox.icon.OxygenIcons
|
import top.fatweb.oxygen.toolbox.icon.OxygenIcons
|
||||||
@@ -81,6 +82,7 @@ fun OxygenTopAppBar(
|
|||||||
CenterAlignedTopAppBar(
|
CenterAlignedTopAppBar(
|
||||||
modifier = modifier,
|
modifier = modifier,
|
||||||
scrollBehavior = scrollBehavior,
|
scrollBehavior = scrollBehavior,
|
||||||
|
expandedHeight = 48.dp,
|
||||||
title = {
|
title = {
|
||||||
if (activeSearch) TextField(
|
if (activeSearch) TextField(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
@@ -116,6 +118,7 @@ fun OxygenTopAppBar(
|
|||||||
},
|
},
|
||||||
maxLines = 1,
|
maxLines = 1,
|
||||||
singleLine = true,
|
singleLine = true,
|
||||||
|
textStyle = MaterialTheme.typography.titleSmall,
|
||||||
onValueChange = {
|
onValueChange = {
|
||||||
if ("\n" !in it) onQueryChange(it)
|
if ("\n" !in it) onQueryChange(it)
|
||||||
}
|
}
|
||||||
@@ -175,7 +178,13 @@ enum class SearchButtonPosition {
|
|||||||
private fun OxygenTopAppBarPreview() {
|
private fun OxygenTopAppBarPreview() {
|
||||||
OxygenTheme {
|
OxygenTheme {
|
||||||
OxygenTopAppBar(
|
OxygenTopAppBar(
|
||||||
title = { Text(text = stringResource(androidR.string.untitled)) },
|
title = {
|
||||||
|
Text(
|
||||||
|
text = stringResource(androidR.string.untitled),
|
||||||
|
maxLines = 1,
|
||||||
|
overflow = TextOverflow.Ellipsis
|
||||||
|
)
|
||||||
|
},
|
||||||
navigationIcon = OxygenIcons.Search,
|
navigationIcon = OxygenIcons.Search,
|
||||||
navigationIconContentDescription = "Navigation icon",
|
navigationIconContentDescription = "Navigation icon",
|
||||||
actionIcon = OxygenIcons.MoreVert,
|
actionIcon = OxygenIcons.MoreVert,
|
||||||
|
|||||||
@@ -204,7 +204,7 @@ fun supportsDynamicTheming() = Build.VERSION.SDK_INT >= Build.VERSION_CODES.S
|
|||||||
uiMode = Configuration.UI_MODE_NIGHT_YES or Configuration.UI_MODE_TYPE_NORMAL
|
uiMode = Configuration.UI_MODE_NIGHT_YES or Configuration.UI_MODE_TYPE_NORMAL
|
||||||
)
|
)
|
||||||
@Preview(
|
@Preview(
|
||||||
name = "Api 21 Light", group = "ApiLevelPreviews", apiLevel = 21,
|
name = "Api 24 Light", group = "ApiLevelPreviews", apiLevel = 24,
|
||||||
uiMode = Configuration.UI_MODE_NIGHT_NO or Configuration.UI_MODE_TYPE_NORMAL
|
uiMode = Configuration.UI_MODE_NIGHT_NO or Configuration.UI_MODE_TYPE_NORMAL
|
||||||
)
|
)
|
||||||
annotation class OxygenPreviews
|
annotation class OxygenPreviews
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ import androidx.compose.ui.Modifier
|
|||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
|
import androidx.compose.ui.text.style.TextOverflow
|
||||||
import androidx.hilt.navigation.compose.hiltViewModel
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||||
import com.kevinnzou.web.AccompanistWebChromeClient
|
import com.kevinnzou.web.AccompanistWebChromeClient
|
||||||
@@ -119,7 +120,9 @@ private fun TopBar(
|
|||||||
R.string.feature_tool_view_preview_suffix,
|
R.string.feature_tool_view_preview_suffix,
|
||||||
toolViewUiState.toolName
|
toolViewUiState.toolName
|
||||||
) else toolViewUiState.toolName
|
) else toolViewUiState.toolName
|
||||||
}
|
},
|
||||||
|
maxLines = 1,
|
||||||
|
overflow = TextOverflow.Ellipsis
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
navigationIcon = OxygenIcons.Back,
|
navigationIcon = OxygenIcons.Back,
|
||||||
|
|||||||
Reference in New Issue
Block a user