diff --git a/app/src/main/java/com/aiosman/ravenow/ui/points/PointsBottomSheet.kt b/app/src/main/java/com/aiosman/ravenow/ui/points/PointsBottomSheet.kt index eda311f..093eea9 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/points/PointsBottomSheet.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/points/PointsBottomSheet.kt @@ -23,12 +23,10 @@ import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.offset -import androidx.compose.foundation.layout.WindowInsets -import androidx.compose.foundation.layout.systemBars -import androidx.compose.foundation.layout.asPaddingValues import androidx.compose.material3.Button import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ModalBottomSheet +import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.animation.core.animateDpAsState @@ -56,7 +54,6 @@ import androidx.compose.ui.geometry.CornerRadius import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.onSizeChanged -import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.IntSize @@ -106,33 +103,37 @@ fun PointsBottomSheet( } } - val statusBarPadding = WindowInsets.systemBars.asPaddingValues() - val configuration = LocalConfiguration.current - val screenHeight = configuration.screenHeightDp.dp - val offsetY = screenHeight * 0.07f - statusBarPadding.calculateTopPadding() - ModalBottomSheet( onDismissRequest = onClose, // 允许通过代码关闭(如返回按钮) sheetState = sheetState, - containerColor = AppColors.background, - dragHandle = null // 移除拖动手柄 + containerColor = Color.Transparent, + dragHandle = null, // 移除拖动手柄 + shape = RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp) ) { Box( modifier = Modifier .fillMaxWidth() - .fillMaxHeight(0.95f) - .offset(y = offsetY) - .padding( - start = 16.dp, - end = 16.dp, - bottom = 8.dp - ) + .padding(top = 10.dp) ) { - Column( + Surface( modifier = Modifier .fillMaxWidth() .fillMaxHeight() + .clip(RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp)), + color = AppColors.background, + tonalElevation = 0.dp, + shadowElevation = 0.dp, ) { + Column( + modifier = Modifier + .fillMaxWidth() + .fillMaxHeight() + .padding( + start = 16.dp, + end = 16.dp, + bottom = 8.dp + ) + ) { // 头部 - 使用 Box 实现绝对居中布局 Box( modifier = Modifier @@ -340,6 +341,7 @@ fun PointsBottomSheet( } else { HowToEarnList(onRecharge = onRecharge) } + } } } } diff --git a/app/src/main/java/com/aiosman/ravenow/ui/post/DraftBox.kt b/app/src/main/java/com/aiosman/ravenow/ui/post/DraftBox.kt index 3d01b00..aca839a 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/post/DraftBox.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/post/DraftBox.kt @@ -22,6 +22,7 @@ import androidx.compose.material3.Divider import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.ModalBottomSheet +import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.runtime.Composable @@ -34,6 +35,7 @@ import android.graphics.BitmapFactory import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource @@ -78,92 +80,108 @@ fun DraftBoxBottomSheet( ModalBottomSheet( onDismissRequest = onDismiss, sheetState = sheetState, - containerColor = AppColors.background, + containerColor = Color.Transparent, shape = RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp), dragHandle = {} ) { - Column( + Box( modifier = Modifier .fillMaxWidth() - .fillMaxHeight(0.9f) - .padding(horizontal = 16.dp, vertical = 8.dp) + .padding(top = 8.dp) ) { - // 标题 - Box( + Surface( modifier = Modifier .fillMaxWidth() - .padding(vertical = 16.dp), - contentAlignment = Alignment.Center + .fillMaxHeight() + .clip(RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp)), + color = AppColors.background, + tonalElevation = 0.dp, + shadowElevation = 0.dp, ) { - Text( - text = stringResource(R.string.drafts), - fontSize = 17.sp, - fontWeight = FontWeight.Bold, - color = AppColors.text - ) - } - - // 草稿列表 - if (drafts.isEmpty()) { - Box( + Column( modifier = Modifier .fillMaxWidth() - .fillMaxHeight(), - contentAlignment = Alignment.Center + .fillMaxHeight() + .padding(horizontal = 16.dp, vertical = 8.dp) ) { - Text( - text = stringResource(R.string.no_drafts), - fontSize = 16.sp, - color = AppColors.secondaryText - ) - } - } else { - LazyColumn( - modifier = Modifier - .fillMaxWidth() - .weight(1f), - verticalArrangement = Arrangement.spacedBy(0.dp) - ) { - itemsIndexed(drafts) { index, draft -> - DraftItem( - draft = draft, - dateFormat = dateFormat, - onEditClick = { - model.viewModelScope.launch { - model.loadDraft(context, draft) - onDismiss() - } - }, - onDeleteClick = { - draftStore.deleteDraft(index) - drafts = draftStore.getAllDrafts() - }, - AppColors = AppColors, - context = context + // 标题 + Box( + modifier = Modifier + .fillMaxWidth() + .padding(vertical = 16.dp), + contentAlignment = Alignment.Center + ) { + Text( + text = stringResource(R.string.drafts), + fontSize = 17.sp, + fontWeight = FontWeight.Bold, + color = AppColors.text ) - // 在草稿项之间添加分割线(最后一个不添加) - if (index < drafts.size - 1) { - Spacer(modifier = Modifier.height(12.dp)) - Divider( - color = AppColors.secondaryText.copy(alpha = 0.2f), - thickness = 0.5.dp, - modifier = Modifier.padding(horizontal = 16.dp) + } + + // 草稿列表 + if (drafts.isEmpty()) { + Box( + modifier = Modifier + .fillMaxWidth() + .fillMaxHeight(), + contentAlignment = Alignment.Center + ) { + Text( + text = stringResource(R.string.no_drafts), + fontSize = 16.sp, + color = AppColors.secondaryText ) - Spacer(modifier = Modifier.height(12.dp)) } + } else { + LazyColumn( + modifier = Modifier + .fillMaxWidth() + .weight(1f), + verticalArrangement = Arrangement.spacedBy(0.dp) + ) { + itemsIndexed(drafts) { index, draft -> + DraftItem( + draft = draft, + dateFormat = dateFormat, + onEditClick = { + model.viewModelScope.launch { + model.loadDraft(context, draft) + onDismiss() + } + }, + onDeleteClick = { + draftStore.deleteDraft(index) + drafts = draftStore.getAllDrafts() + }, + AppColors = AppColors, + context = context + ) + // 在草稿项之间添加分割线(最后一个不添加) + if (index < drafts.size - 1) { + Spacer(modifier = Modifier.height(12.dp)) + Divider( + color = AppColors.secondaryText.copy(alpha = 0.2f), + thickness = 0.5.dp, + modifier = Modifier.padding(horizontal = 16.dp) + ) + Spacer(modifier = Modifier.height(12.dp)) + } + } + } + + // 底部提示 + Text( + text = stringResource(R.string.only_save_the_last_5_drafts), + fontSize = 12.sp, + color = AppColors.secondaryText, + modifier = Modifier + .fillMaxWidth() + .padding(vertical = 8.dp), + textAlign = androidx.compose.ui.text.style.TextAlign.Center + ) } } - - // 底部提示 - Text( - text = stringResource(R.string.only_save_the_last_5_drafts), - fontSize = 12.sp, - color = AppColors.secondaryText, - modifier = Modifier - .fillMaxWidth() - .padding(vertical = 8.dp), - textAlign = androidx.compose.ui.text.style.TextAlign.Center - ) } } } diff --git a/app/src/main/java/com/aiosman/ravenow/ui/post/Post.kt b/app/src/main/java/com/aiosman/ravenow/ui/post/Post.kt index d8951f0..fe5c6f2 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/post/Post.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/post/Post.kt @@ -26,6 +26,7 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.asPaddingValues import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height @@ -46,6 +47,7 @@ import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.ModalBottomSheet import androidx.compose.material3.Scaffold +import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.runtime.Composable @@ -302,20 +304,35 @@ fun PostScreen( onDismissRequest = { showReportDialog = false }, - containerColor = AppColors.background, + containerColor = Color.Transparent, sheetState = rememberModalBottomSheetState( skipPartiallyExpanded = true ), dragHandle = {}, shape = RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp), - ) { - ReportModal( - momentId = viewModel.moment!!.id, - onClose = { - showReportDialog = false + Box( + modifier = Modifier + .fillMaxWidth() + .padding(top = 7.dp) + ) { + Surface( + modifier = Modifier + .fillMaxWidth() + .clip(RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp)), + tonalElevation = 0.dp, + shadowElevation = 0.dp, + color = AppColors.background, + contentColor = AppColors.text + ) { + ReportModal( + momentId = viewModel.moment!!.id, + onClose = { + showReportDialog = false + } + ) } - ) + } } } Scaffold( @@ -2033,8 +2050,8 @@ fun ReportModal( Column( modifier = Modifier .fillMaxWidth() - .background(AppColors.background) - .padding(start = 24.dp, end = 24.dp, bottom = 64.dp) + .fillMaxHeight() + .padding(start = 24.dp, end = 24.dp) ) { Box( modifier = Modifier.fillMaxWidth().padding(top = 16.dp, bottom = 16.dp),