From fb7195846353143a9c3a9c5ed4fdc53cbf68e72a Mon Sep 17 00:00:00 2001 From: Mystery406 <648353188@qq.com> Date: Thu, 28 Aug 2025 11:03:23 +0800 Subject: [PATCH 1/3] =?UTF-8?q?fix(ui):=20=E6=9D=A1=E7=9B=AE=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E9=A1=B5=E7=9A=84Tab=E6=A0=8F=E5=9C=A8=E5=B9=B3?= =?UTF-8?q?=E6=9D=BF=E4=B8=8A=E6=98=BE=E7=A4=BA=E4=B8=8D=E5=85=A8=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/ui/subject/details/SubjectDetailsPage.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/shared/ui-subject/src/commonMain/kotlin/ui/subject/details/SubjectDetailsPage.kt b/app/shared/ui-subject/src/commonMain/kotlin/ui/subject/details/SubjectDetailsPage.kt index 5e089d8765..224282f930 100644 --- a/app/shared/ui-subject/src/commonMain/kotlin/ui/subject/details/SubjectDetailsPage.kt +++ b/app/shared/ui-subject/src/commonMain/kotlin/ui/subject/details/SubjectDetailsPage.kt @@ -354,7 +354,10 @@ private fun SubjectDetailsPage( relatedSubjects = state.relatedSubjectsPager.collectAsLazyPagingItemsWithLifecycle(), Modifier .nestedScrollWorkaround(state.detailsTabLazyListState, connectedScrollState) - .nestedScroll(connectedScrollState.nestedScrollConnection), + .nestedScroll(connectedScrollState.nestedScrollConnection) + .fillMaxWidth() + .wrapContentWidth(align = Alignment.CenterHorizontally) + .widthIn(max = MaximumContentWidth), state.detailsTabLazyListState, contentPadding = contentPadding, ) @@ -387,7 +390,6 @@ private fun SubjectDetailsPage( }, Modifier .fillMaxWidth() - .wrapContentWidth(align = Alignment.CenterHorizontally) .widthIn(max = MaximumContentWidth), ) } From bdfabca04851be0428696cbf9289ee040ae5b344 Mon Sep 17 00:00:00 2001 From: Mystery406 <648353188@qq.com> Date: Tue, 2 Sep 2025 21:08:37 +0800 Subject: [PATCH 2/3] =?UTF-8?q?chore:=20=E7=A7=BB=E9=99=A4=E5=86=97?= =?UTF-8?q?=E4=BD=99=E7=9A=84modifier?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commonMain/kotlin/ui/subject/details/SubjectDetailsPage.kt | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/shared/ui-subject/src/commonMain/kotlin/ui/subject/details/SubjectDetailsPage.kt b/app/shared/ui-subject/src/commonMain/kotlin/ui/subject/details/SubjectDetailsPage.kt index 224282f930..52cf0674dc 100644 --- a/app/shared/ui-subject/src/commonMain/kotlin/ui/subject/details/SubjectDetailsPage.kt +++ b/app/shared/ui-subject/src/commonMain/kotlin/ui/subject/details/SubjectDetailsPage.kt @@ -388,9 +388,6 @@ private fun SubjectDetailsPage( } } }, - Modifier - .fillMaxWidth() - .widthIn(max = MaximumContentWidth), ) } } From ead29120c5b5bbbff9e0167d153253cc3e1f948b Mon Sep 17 00:00:00 2001 From: Mystery406 <648353188@qq.com> Date: Wed, 3 Sep 2025 11:04:38 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix(ui):=20=E8=B6=85=E5=87=BAtab=E5=86=85?= =?UTF-8?q?=E5=AE=B9=E5=AE=BD=E5=BA=A6=E9=99=90=E5=88=B6=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E5=93=8D=E5=BA=94=E5=9E=82=E7=9B=B4=E6=96=B9?= =?UTF-8?q?=E5=90=91=E6=BB=91=E5=8A=A8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/ui/comment/CommentColumn.kt | 30 +++++++++++++------ .../ui/subject/details/SubjectDetailsPage.kt | 4 +-- .../subject/details/components/DetailsTab.kt | 29 +++++++++++------- .../components/SubjectCommentColumn.kt | 13 +++----- 4 files changed, 45 insertions(+), 31 deletions(-) diff --git a/app/shared/ui-comment/src/commonMain/kotlin/ui/comment/CommentColumn.kt b/app/shared/ui-comment/src/commonMain/kotlin/ui/comment/CommentColumn.kt index f0f8f77213..a21d6ca188 100644 --- a/app/shared/ui-comment/src/commonMain/kotlin/ui/comment/CommentColumn.kt +++ b/app/shared/ui-comment/src/commonMain/kotlin/ui/comment/CommentColumn.kt @@ -16,6 +16,7 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.LazyGridItemScope import androidx.compose.foundation.lazy.grid.LazyGridState @@ -28,6 +29,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.paging.compose.LazyPagingItems import androidx.paging.compose.itemContentType @@ -53,7 +55,8 @@ fun CommentColumn( contentPadding: PaddingValues = PaddingValues(0.dp), connectedScrollState: ConnectedScrollState? = null, state: LazyGridState = rememberLazyGridState(), - commentItem: @Composable LazyGridItemScope.(index: Int, item: UIComment) -> Unit + maxColumnWidth: Dp = Dp.Unspecified, + commentItem: @Composable LazyGridItemScope.(index: Int, item: UIComment) -> Unit, ) { PullToRefreshBox( isRefreshing = items.isLoadingFirstPageOrRefreshing, @@ -90,15 +93,24 @@ fun CommentColumn( key = items.itemKey { "CommentColumn-" + it.id }, contentType = items.itemContentType(), ) { index -> - Column { - val item = items[index] ?: return@items - commentItem(index, item) + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.Center, + ) { + Column( + modifier = Modifier + .widthIn(max = maxColumnWidth) + .fillMaxWidth(), + ) { + val item = items[index] ?: return@items + commentItem(index, item) - if (hasDividerLine && index != items.itemCount - 1) { - HorizontalDivider( - modifier = Modifier.fillMaxWidth(), - color = DividerDefaults.color.stronglyWeaken(), - ) + if (hasDividerLine && index != items.itemCount - 1) { + HorizontalDivider( + modifier = Modifier.fillMaxWidth(), + color = DividerDefaults.color.stronglyWeaken(), + ) + } } } } diff --git a/app/shared/ui-subject/src/commonMain/kotlin/ui/subject/details/SubjectDetailsPage.kt b/app/shared/ui-subject/src/commonMain/kotlin/ui/subject/details/SubjectDetailsPage.kt index 52cf0674dc..d6cb3aa080 100644 --- a/app/shared/ui-subject/src/commonMain/kotlin/ui/subject/details/SubjectDetailsPage.kt +++ b/app/shared/ui-subject/src/commonMain/kotlin/ui/subject/details/SubjectDetailsPage.kt @@ -355,9 +355,7 @@ private fun SubjectDetailsPage( Modifier .nestedScrollWorkaround(state.detailsTabLazyListState, connectedScrollState) .nestedScroll(connectedScrollState.nestedScrollConnection) - .fillMaxWidth() - .wrapContentWidth(align = Alignment.CenterHorizontally) - .widthIn(max = MaximumContentWidth), + .fillMaxWidth(), state.detailsTabLazyListState, contentPadding = contentPadding, ) diff --git a/app/shared/ui-subject/src/commonMain/kotlin/ui/subject/details/components/DetailsTab.kt b/app/shared/ui-subject/src/commonMain/kotlin/ui/subject/details/components/DetailsTab.kt index e5713a3cef..e5d2bdd660 100644 --- a/app/shared/ui-subject/src/commonMain/kotlin/ui/subject/details/components/DetailsTab.kt +++ b/app/shared/ui-subject/src/commonMain/kotlin/ui/subject/details/components/DetailsTab.kt @@ -25,6 +25,7 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.statusBarsPadding +import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.layout.wrapContentSize import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyListState @@ -134,23 +135,32 @@ fun SubjectDetailsDefaults.DetailsTab( horizontalPadding: Dp = currentWindowAdaptiveInfo1().windowSizeClass.paneHorizontalPadding, contentPadding: PaddingValues = PaddingValues(0.dp), ) { + + fun Modifier.limitContentWidthAndApplyPadding() = this + .widthIn(max = MaximumContentWidth) + .fillMaxWidth() + .padding(horizontal = horizontalPadding) + LazyColumn( modifier, state = state, contentPadding = contentPadding, verticalArrangement = Arrangement.spacedBy(20.dp), // 这个页面内容比较密集, 如果用 16 显得有点拥挤 + horizontalAlignment = Alignment.CenterHorizontally, ) { item("spacer header") { } // 简介 item("description") { - Column(verticalArrangement = Arrangement.spacedBy(12.dp)) { + Column( + modifier = Modifier.limitContentWidthAndApplyPadding(), + verticalArrangement = Arrangement.spacedBy(12.dp), + ) { SelectionContainer { var expanded by rememberSaveable { mutableStateOf(false) } Text( info.summary, - Modifier.fillMaxWidth().padding(horizontal = horizontalPadding) - .clickable { expanded = !expanded }, + Modifier.fillMaxWidth().clickable { expanded = !expanded }, style = MaterialTheme.typography.bodyMedium, maxLines = if (expanded) Int.MAX_VALUE else 5, // TODO: add animation overflow = TextOverflow.Ellipsis, @@ -160,7 +170,6 @@ fun SubjectDetailsDefaults.DetailsTab( TagsList( info, onClickTag, - Modifier.padding(horizontal = horizontalPadding), ) } } @@ -168,7 +177,7 @@ fun SubjectDetailsDefaults.DetailsTab( item("characters title") { Text( "角色", - Modifier.padding(horizontal = horizontalPadding), + Modifier.limitContentWidthAndApplyPadding(), style = MaterialTheme.typography.titleMedium, ) } @@ -182,7 +191,7 @@ fun SubjectDetailsDefaults.DetailsTab( if (totalCharactersCount == null) "角色" else "角色 $totalCharactersCount", ) }, - modifier = Modifier.padding(horizontal = horizontalPadding), + modifier = Modifier.limitContentWidthAndApplyPadding(), itemContent = { PersonCard(it) }, ) } @@ -190,7 +199,7 @@ fun SubjectDetailsDefaults.DetailsTab( item("staff title") { Text( "制作人员", - Modifier.padding(horizontal = horizontalPadding), + Modifier.limitContentWidthAndApplyPadding(), style = MaterialTheme.typography.titleMedium, ) } @@ -204,7 +213,7 @@ fun SubjectDetailsDefaults.DetailsTab( if (totalStaffCount == null) "制作人员" else "制作人员 $totalStaffCount", ) }, - modifier = Modifier.padding(horizontal = horizontalPadding), + modifier = Modifier.limitContentWidthAndApplyPadding(), itemContent = { PersonCard(it) }, ) } @@ -213,7 +222,7 @@ fun SubjectDetailsDefaults.DetailsTab( item("related subjects title") { Text( "关联条目", - Modifier.padding(horizontal = horizontalPadding), + Modifier.limitContentWidthAndApplyPadding(), style = MaterialTheme.typography.titleMedium, ) } @@ -233,7 +242,7 @@ fun SubjectDetailsDefaults.DetailsTab( ), ) }, - Modifier.padding(horizontal = horizontalPadding), + Modifier.limitContentWidthAndApplyPadding(), horizontalSpacing = horizontalPadding, verticalSpacing = horizontalPadding, ) diff --git a/app/shared/ui-subject/src/commonMain/kotlin/ui/subject/details/components/SubjectCommentColumn.kt b/app/shared/ui-subject/src/commonMain/kotlin/ui/subject/details/components/SubjectCommentColumn.kt index a8237d0f01..d37b4173e9 100644 --- a/app/shared/ui-subject/src/commonMain/kotlin/ui/subject/details/components/SubjectCommentColumn.kt +++ b/app/shared/ui-subject/src/commonMain/kotlin/ui/subject/details/components/SubjectCommentColumn.kt @@ -13,11 +13,9 @@ import androidx.compose.foundation.clickable import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.PaddingValues -import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.widthIn -import androidx.compose.foundation.layout.wrapContentWidth import androidx.compose.foundation.lazy.grid.LazyGridState import androidx.compose.foundation.lazy.grid.rememberLazyGridState import androidx.compose.material3.Text @@ -54,14 +52,11 @@ fun SubjectDetailsDefaults.SubjectCommentColumn( Box(modifier, contentAlignment = Alignment.TopCenter) { CommentColumn( state.list.collectAsLazyPagingItemsWithLifecycle(), - modifier = Modifier - .fillMaxWidth() - .wrapContentWidth(align = Alignment.CenterHorizontally) - .widthIn(max = SubjectDetailsDefaults.MaximumContentWidth) - .fillMaxHeight(), + modifier = Modifier.fillMaxSize(), contentPadding = contentPadding, state = gridState, connectedScrollState = connectedScrollState, + maxColumnWidth = MaximumContentWidth, ) { _, comment -> SubjectComment( comment = comment, @@ -97,7 +92,7 @@ fun SubjectComment( } }, ) - + Comment( avatar = { CommentDefaults.Avatar(comment.author?.avatarUrl, authorModifier) }, primaryTitle = {