标签页调整

This commit is contained in:
2025-09-09 14:41:37 +08:00
parent 21cb512237
commit cd35562244
4 changed files with 163 additions and 124 deletions

View File

@@ -37,12 +37,12 @@ fun TabItem(
) { ) {
Text( Text(
text = text, text = text,
fontSize = 14.sp, fontSize = 15.sp,
color = if (isSelected) AppColors.tabSelectedText else AppColors.tabUnselectedText, color = if (isSelected) AppColors.tabSelectedText else AppColors.tabUnselectedText,
modifier = Modifier modifier = Modifier
.clip(RoundedCornerShape(8.dp)) .clip(RoundedCornerShape(12.dp))
.background(if (isSelected) AppColors.tabSelectedBackground else AppColors.tabUnselectedBackground) .background(if (isSelected) AppColors.tabSelectedBackground else AppColors.tabUnselectedBackground)
.padding(horizontal = 11.dp, vertical = 4.dp) .padding(horizontal = 16.dp, vertical = 8.dp)
) )
} }
} }

View File

@@ -23,8 +23,6 @@ import com.aiosman.ravenow.exp.formatChatTime
import com.aiosman.ravenow.ui.NavigationRoute import com.aiosman.ravenow.ui.NavigationRoute
import com.aiosman.ravenow.ui.navigateToChat import com.aiosman.ravenow.ui.navigateToChat
import com.aiosman.ravenow.utils.TrtcHelper import com.aiosman.ravenow.utils.TrtcHelper
// 临时兼容层 - TODO: 完成 OpenIM 迁移后删除
import com.aiosman.ravenow.compat.*
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.launch import kotlinx.coroutines.launch

View File

@@ -140,143 +140,183 @@ fun NotificationsScreen() {
Column( Column(
modifier = Modifier.fillMaxSize(), modifier = Modifier.fillMaxSize(),
) { ) {
Row( Row(
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 15.dp),
verticalAlignment = Alignment.CenterVertically
) {
Box(
modifier = Modifier modifier = Modifier
.size(24.dp) .fillMaxWidth()
) .height(44.dp)
Column( .padding(horizontal = 16.dp),
modifier = Modifier horizontalArrangement = Arrangement.Start,
.weight(1f) verticalAlignment = Alignment.CenterVertically
.align(Alignment.CenterVertically),
horizontalAlignment = Alignment.CenterHorizontally
) { ) {
Text( Text(
text = stringResource(R.string.main_message), text = stringResource(R.string.main_message),
fontSize = 17.sp, fontSize = 20.sp,
fontWeight = FontWeight.W700, fontWeight = FontWeight.W900,
color = AppColors.text color = AppColors.text
) )
}
Image( Spacer(modifier = Modifier.weight(1f))
painter = painterResource(id = R.drawable.rider_pro_group),
contentDescription = "add",
modifier = Modifier
.size(24.dp)
.noRippleClickable {
debouncer {
navController.navigate(NavigationRoute.CreateGroupChat.route)
}
},
colorFilter = ColorFilter.tint(AppColors.text)
)
Image(
}
// 搜索栏//
Box(
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 16.dp, vertical = 8.dp)
.height(40.dp)
.noRippleClickable {
},
contentAlignment = Alignment.CenterStart
) {
Row(
modifier = Modifier
.height(36.dp)
.fillMaxWidth()
.clip(shape = RoundedCornerShape(8.dp))
.background(AppColors.inputBackground)
.padding(horizontal = 8.dp, vertical = 0.dp)
.noRippleClickable {
// 搜索框点击事件
},
verticalAlignment = Alignment.CenterVertically
) {
Icon(
painter = painterResource(id = R.drawable.rider_pro_nav_search), painter = painterResource(id = R.drawable.rider_pro_nav_search),
contentDescription = null, contentDescription = "search",
tint = AppColors.inputHint modifier = Modifier
.size(24.dp)
.noRippleClickable {
// TODO: 实现搜索功能
},
colorFilter = ColorFilter.tint(AppColors.text)
) )
Spacer(modifier = Modifier.width(16.dp))
Box { Box {
androidx.compose.material.Text( Image(
text = stringResource(R.string.search), painter = painterResource(id = R.drawable.rider_pro_notification),
modifier = Modifier.padding(start = 8.dp), contentDescription = "notifications",
color = AppColors.inputHint, modifier = Modifier
fontSize = 17.sp .size(24.dp)
.noRippleClickable {
// TODO: 实现通知功能
},
colorFilter = ColorFilter.tint(AppColors.text)
) )
}
}
}
Row( // 通知红点
modifier = Modifier val totalNoticeCount = MessageListViewModel.likeNoticeCount +
.fillMaxWidth() MessageListViewModel.followNoticeCount +
.padding(horizontal = 16.dp), MessageListViewModel.commentNoticeCount +
horizontalArrangement = Arrangement.SpaceBetween, MessageListViewModel.favouriteNoticeCount
) {
val likeDebouncer = rememberDebouncer()
val followDebouncer = rememberDebouncer()
val commentDebouncer = rememberDebouncer()
NotificationIndicator( if (totalNoticeCount > 0) {
MessageListViewModel.likeNoticeCount, Box(
R.mipmap.rider_pro_like, modifier = Modifier
stringResource(R.string.like_upper), .size(8.dp)
Color(0xFFFAFD5D) .background(
) { color = Color(0xFFFF3B30),
likeDebouncer { shape = CircleShape
if (MessageListViewModel.likeNoticeCount > 0) { )
// 刷新点赞消息列表 .align(Alignment.TopEnd)
LikeNoticeViewModel.isFirstLoad = true .offset(x = 8.dp, y = (-4).dp)
// 清除点赞消息数量 )
MessageListViewModel.clearLikeNoticeCount()
} }
navController.navigate(NavigationRoute.Likes.route)
} }
} }
NotificationIndicator(
MessageListViewModel.followNoticeCount, //创建群聊//
R.mipmap.rider_pro_followers, // Image(
stringResource(R.string.followers_upper), // painter = painterResource(id = R.drawable.rider_pro_group),
Color(0xFFF470FE) // contentDescription = "add",
) { // modifier = Modifier
followDebouncer { // .size(24.dp)
if (MessageListViewModel.followNoticeCount > 0) { // .noRippleClickable {
// 刷新关注消息列表 // debouncer {
FollowerNoticeViewModel.isFirstLoad = true // navController.navigate(NavigationRoute.CreateGroupChat.route)
MessageListViewModel.clearFollowNoticeCount() // }
} // },
navController.navigate(NavigationRoute.Followers.route) // colorFilter = ColorFilter.tint(AppColors.text)
} // )
}
NotificationIndicator(
MessageListViewModel.commentNoticeCount, // // 搜索栏//
R.mipmap.rider_pro_comment, // Box(
stringResource(R.string.comment).uppercase(), // modifier = Modifier
Color(0xFF6246FF) // .fillMaxWidth()
) { // .padding(horizontal = 16.dp, vertical = 8.dp)
commentDebouncer { // .height(40.dp)
navController.navigate(NavigationRoute.CommentNoticeScreen.route) //
} // .noRippleClickable {
} // },
} // contentAlignment = Alignment.CenterStart
// )
// {
// Row(
// modifier = Modifier
// .height(36.dp)
// .fillMaxWidth()
// .clip(shape = RoundedCornerShape(8.dp))
// .background(AppColors.inputBackground)
// .padding(horizontal = 8.dp, vertical = 0.dp)
// .noRippleClickable {
// // 搜索框点击事件
// },
// verticalAlignment = Alignment.CenterVertically
// ) {
// Icon(
// painter = painterResource(id = R.drawable.rider_pro_nav_search),
// contentDescription = null,
// tint = AppColors.inputHint
// )
// Box {
// androidx.compose.material.Text(
// text = stringResource(R.string.search),
// modifier = Modifier.padding(start = 8.dp),
// color = AppColors.inputHint,
// fontSize = 17.sp
// )
// }
// }
// }
//赞、粉丝、评论//
// Row(
// modifier = Modifier
// .fillMaxWidth()
// .padding(horizontal = 16.dp),
// horizontalArrangement = Arrangement.SpaceBetween,
// ) {
// val likeDebouncer = rememberDebouncer()
// val followDebouncer = rememberDebouncer()
// val commentDebouncer = rememberDebouncer()
//
// NotificationIndicator(
// MessageListViewModel.likeNoticeCount,
// R.mipmap.rider_pro_like,
// stringResource(R.string.like_upper),
// Color(0xFFFAFD5D)
// ) {
// likeDebouncer {
// if (MessageListViewModel.likeNoticeCount > 0) {
// // 刷新点赞消息列表
// LikeNoticeViewModel.isFirstLoad = true
// // 清除点赞消息数量
// MessageListViewModel.clearLikeNoticeCount()
// }
// navController.navigate(NavigationRoute.Likes.route)
// }
// }
// NotificationIndicator(
// MessageListViewModel.followNoticeCount,
// R.mipmap.rider_pro_followers,
// stringResource(R.string.followers_upper),
// Color(0xFFF470FE)
// ) {
// followDebouncer {
// if (MessageListViewModel.followNoticeCount > 0) {
// // 刷新关注消息列表
// FollowerNoticeViewModel.isFirstLoad = true
// MessageListViewModel.clearFollowNoticeCount()
// }
// navController.navigate(NavigationRoute.Followers.route)
// }
// }
// NotificationIndicator(
// MessageListViewModel.commentNoticeCount,
// R.mipmap.rider_pro_comment,
// stringResource(R.string.comment).uppercase(),
// Color(0xFF6246FF)
// ) {
// commentDebouncer {
// navController.navigate(NavigationRoute.CommentNoticeScreen.route)
// }
// }
// }
Spacer(modifier = Modifier.height(23.dp))
Row( Row(
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
.wrapContentHeight() .wrapContentHeight()
.padding(start = 16.dp,bottom = 16.dp), .padding(start = 16.dp,bottom = 16.dp),
// center the tabs
horizontalArrangement = Arrangement.Start, horizontalArrangement = Arrangement.Start,
verticalAlignment = Alignment.Bottom verticalAlignment = Alignment.Bottom
) { ) {

View File

@@ -88,6 +88,7 @@ fun MomentsList() {
horizontalArrangement = Arrangement.Start, horizontalArrangement = Arrangement.Start,
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
) { ) {
//原探索//
// Column( // Column(
// modifier = Modifier // modifier = Modifier
// .noRippleClickable { // .noRippleClickable {
@@ -154,10 +155,10 @@ fun MomentsList() {
) { ) {
val tabDebouncer = rememberDebouncer() val tabDebouncer = rememberDebouncer()
// 探索标签 // 探索标签
Box { Box {
CustomTabItem( CustomTabItem(
text = stringResource(R.string.index_dynamic), text = stringResource(R.string.index_worldwide),
isSelected = pagerState.currentPage == 0, isSelected = pagerState.currentPage == 0,
onClick = { onClick = {
tabDebouncer { tabDebouncer {
@@ -274,9 +275,9 @@ fun CustomTabItem(
fontSize = 15.sp, fontSize = 15.sp,
color = if (isSelected) AppColors.tabSelectedText else AppColors.tabUnselectedText, color = if (isSelected) AppColors.tabSelectedText else AppColors.tabUnselectedText,
modifier = Modifier modifier = Modifier
.clip(RoundedCornerShape(10.dp)) .clip(RoundedCornerShape(12.dp))
.background(if (isSelected) AppColors.tabSelectedBackground else AppColors.tabUnselectedBackground) .background(if (isSelected) AppColors.tabSelectedBackground else AppColors.tabUnselectedBackground)
.padding(horizontal = 11.dp, vertical = 4.dp) .padding(horizontal = 16.dp, vertical = 8.dp)
) )
} }
} }