This commit is contained in:
Eric85710 2026-06-24 15:52:48 +08:00
parent 56d2644d13
commit 2844977df8
2 changed files with 78 additions and 1 deletions

View file

@ -0,0 +1,77 @@
package com.example.login_v3.home.Message.UI.Detail.Message_Component
import androidx.compose.foundation.background
import androidx.compose.foundation.border
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Close
import androidx.compose.material.icons.filled.Image
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.blur
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
@Composable
fun MessageAttachmentBar(
onImageClick: () -> Unit,
onCancel: () -> Unit
) {
Box(
modifier = Modifier
.fillMaxWidth()
.navigationBarsPadding()
.padding(horizontal = 16.dp, vertical = 8.dp)
) {
// 毛玻璃背景與邊框 (與 InputBar 一致)
Box(modifier = Modifier.matchParentSize().blur(10.dp))
Box(
modifier = Modifier
.matchParentSize()
.background(MaterialTheme.colorScheme.primary, RoundedCornerShape(16.dp))
.border(1.dp, Color.White.copy(alpha = 0.3f), RoundedCornerShape(16.dp))
)
Row(
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 16.dp, vertical = 12.dp),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.spacedBy(24.dp)
) {
// 圖片選擇按鈕
IconButton(onClick = onImageClick) {
Column(horizontalAlignment = Alignment.CenterHorizontally) {
Icon(
imageVector = Icons.Default.Image, // 記得引入對應的 Icon
contentDescription = "選擇圖片",
tint = Color.White
)
}
}
Spacer(modifier = Modifier.weight(1f))
// 關閉/返回輸入框按鈕
IconButton(onClick = onCancel) {
Icon(
imageVector = Icons.Default.Close,
contentDescription = "返回輸入",
tint = Color.White.copy(alpha = 0.7f)
)
}
}
}
}

View file

@ -95,8 +95,8 @@ sealed interface BottomBarState {
object Input : BottomBarState // 預設:輸入框 object Input : BottomBarState // 預設:輸入框
data class ActionMenu(val message: Message) : BottomBarState // 長按:動作選單 data class ActionMenu(val message: Message) : BottomBarState // 長按:動作選單
data class EmojiMenu(val message: Message) : BottomBarState // 單擊:Emoji 工具列 data class EmojiMenu(val message: Message) : BottomBarState // 單擊:Emoji 工具列
object AttachmentMenu : BottomBarState // 🎯 新增:附件選單
} }
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)
@Composable @Composable
fun MessageMessaging( fun MessageMessaging(