主视图优化

This commit is contained in:
2025-10-20 22:54:19 +08:00
parent 5f07605a06
commit 1ac177be8b
4 changed files with 23 additions and 8 deletions

View File

@@ -16,18 +16,25 @@ class MainActivity : ComponentActivity() {
enableEdgeToEdge() enableEdgeToEdge()
// 设置全屏显示 // 设置全屏显示
WindowCompat.setDecorFitsSystemWindows(window, true) WindowCompat.setDecorFitsSystemWindows(window, false)
// 设置状态栏图标颜色 // 设置状态栏图标颜色
val windowInsetsController = WindowInsetsControllerCompat(window, window.decorView) val controller = WindowInsetsControllerCompat(window, window.decorView)
// windowInsetsController.hide(WindowInsetsCompat.Type.statusBars() or WindowInsetsCompat.Type.navigationBars()) // windowInsetsController.hide(WindowInsetsCompat.Type.statusBars() or WindowInsetsCompat.Type.navigationBars())
// windowInsetsController.systemBarsBehavior = // windowInsetsController.systemBarsBehavior =
// WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE // WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
// 显示状态栏和导航栏
// controller.show(WindowInsetsCompat.Type.systemBars())
// 设置系统栏行为:用户上滑时再显示(可选)
// controller.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_DEFAULT
// 使用系统原生方法检测暗色主题 // 使用系统原生方法检测暗色主题
val isDarkTheme = resources.configuration.uiMode and val isDarkTheme = resources.configuration.uiMode and
Configuration.UI_MODE_NIGHT_MASK == Configuration.UI_MODE_NIGHT_YES Configuration.UI_MODE_NIGHT_MASK == Configuration.UI_MODE_NIGHT_YES
windowInsetsController.isAppearanceLightStatusBars = !isDarkTheme controller.isAppearanceLightStatusBars = isDarkTheme
controller.isAppearanceLightNavigationBars = isDarkTheme
setContent { setContent {
App() App()

View File

@@ -1,7 +1,9 @@
package com.taskttl.core.routes package com.taskttl.core.routes
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.List import androidx.compose.material.icons.automirrored.filled.List
@@ -14,6 +16,7 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import androidx.navigation.NavDestination.Companion.hasRoute import androidx.navigation.NavDestination.Companion.hasRoute
import androidx.navigation.compose.NavHost import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable import androidx.navigation.compose.composable
@@ -22,12 +25,12 @@ import androidx.navigation.compose.rememberNavController
import androidx.navigation.toRoute import androidx.navigation.toRoute
import com.taskttl.core.routes.Routes.Main import com.taskttl.core.routes.Routes.Main
import com.taskttl.core.ui.CustomBottomBar import com.taskttl.core.ui.CustomBottomBar
import com.taskttl.presentation.category.CategoryEditScreen
import com.taskttl.presentation.category.CategoryScreen
import com.taskttl.presentation.countdown.CountdownDetailScreen import com.taskttl.presentation.countdown.CountdownDetailScreen
import com.taskttl.presentation.countdown.CountdownEditScreen import com.taskttl.presentation.countdown.CountdownEditScreen
import com.taskttl.presentation.countdown.CountdownScreen import com.taskttl.presentation.countdown.CountdownScreen
import com.taskttl.presentation.settings.AboutScreen import com.taskttl.presentation.settings.AboutScreen
import com.taskttl.presentation.category.CategoryEditScreen
import com.taskttl.presentation.category.CategoryScreen
import com.taskttl.presentation.settings.DataManagementScreen import com.taskttl.presentation.settings.DataManagementScreen
import com.taskttl.presentation.settings.FeedbackScreen import com.taskttl.presentation.settings.FeedbackScreen
import com.taskttl.presentation.settings.PrivacyScreen import com.taskttl.presentation.settings.PrivacyScreen
@@ -61,7 +64,8 @@ fun MainNav() {
val currentDestination by mainNavController.currentBackStackEntryAsState() val currentDestination by mainNavController.currentBackStackEntryAsState()
Scaffold( Scaffold(
modifier = Modifier.background(Color(0xffF9F9F9)), modifier = Modifier.fillMaxSize().background(Color(0xffF9F9F9)),
contentWindowInsets = WindowInsets(0.dp),
bottomBar = { bottomBar = {
CustomBottomBar( CustomBottomBar(
bottomItems = bottomItems, bottomItems = bottomItems,
@@ -80,7 +84,8 @@ fun MainNav() {
} }
) { paddingValues -> ) { paddingValues ->
NavHost( NavHost(
modifier = Modifier.fillMaxSize().padding(paddingValues), modifier = Modifier.fillMaxSize()
.padding(bottom = paddingValues.calculateBottomPadding()),
navController = mainNavController, navController = mainNavController,
startDestination = Main.Task startDestination = Main.Task
) { ) {

View File

@@ -10,6 +10,7 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
@@ -42,7 +43,7 @@ fun CustomBottomBar(
val barHeight = 56.dp val barHeight = 56.dp
Box( Box(
modifier = Modifier.fillMaxWidth().height(barHeight) modifier = Modifier.navigationBarsPadding().fillMaxWidth().height(barHeight)
.background(MaterialTheme.colorScheme.background) .background(MaterialTheme.colorScheme.background)
) { ) {
Row( Row(

View File

@@ -6,6 +6,7 @@ import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
@@ -53,6 +54,7 @@ fun AppHeader(
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
.background(brush = gradient) .background(brush = gradient)
.statusBarsPadding()
.padding(horizontal = 20.dp, vertical = 15.dp), .padding(horizontal = 20.dp, vertical = 15.dp),
horizontalArrangement = Arrangement.SpaceBetween, horizontalArrangement = Arrangement.SpaceBetween,
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically