fix(android): tighten Voice tab box sizing (#100491)

Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>
This commit is contained in:
WhatsSkiLL
2026-07-06 07:42:31 +02:00
committed by GitHub
parent 7e81f15961
commit b52c22f3da
2 changed files with 96 additions and 42 deletions

View File

@@ -4787,7 +4787,7 @@
},
{
"kind": "ui-named-argument",
"line": 382,
"line": 387,
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt",
"source": "Tip: stop listening to send the captured turn.",
"surface": "android",
@@ -4795,7 +4795,7 @@
},
{
"kind": "ui-named-argument",
"line": 386,
"line": 397,
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt",
"source": "Cancel",
"surface": "android",
@@ -4803,7 +4803,7 @@
},
{
"kind": "conditional-branch",
"line": 387,
"line": 398,
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt",
"source": "Send to Chat",
"surface": "android",
@@ -4811,7 +4811,7 @@
},
{
"kind": "ui-named-argument",
"line": 427,
"line": 438,
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt",
"source": "Back to voice",
"surface": "android",
@@ -4819,7 +4819,7 @@
},
{
"kind": "ui-named-argument",
"line": 429,
"line": 440,
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt",
"source": "Realtime Talk",
"surface": "android",
@@ -4827,7 +4827,7 @@
},
{
"kind": "ui-named-argument",
"line": 446,
"line": 457,
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt",
"source": "Talk settings",
"surface": "android",
@@ -4835,7 +4835,7 @@
},
{
"kind": "conditional-branch",
"line": 470,
"line": 483,
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt",
"source": "Mute",
"surface": "android",
@@ -4843,7 +4843,7 @@
},
{
"kind": "conditional-branch",
"line": 470,
"line": 483,
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt",
"source": "Unmute",
"surface": "android",
@@ -4851,7 +4851,7 @@
},
{
"kind": "ui-named-argument",
"line": 471,
"line": 489,
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt",
"source": "End",
"surface": "android",
@@ -4859,7 +4859,7 @@
},
{
"kind": "ui-named-argument",
"line": 485,
"line": 512,
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt",
"source": "Listening for your next turn.",
"surface": "android",
@@ -4867,7 +4867,7 @@
},
{
"kind": "ui-named-argument",
"line": 572,
"line": 612,
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt",
"source": "OpenClaw",
"surface": "android",
@@ -4875,7 +4875,7 @@
},
{
"kind": "ui-named-argument",
"line": 577,
"line": 617,
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt",
"source": "Search voice",
"surface": "android",
@@ -4883,7 +4883,7 @@
},
{
"kind": "ui-named-argument",
"line": 585,
"line": 625,
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt",
"source": "Voice",
"surface": "android",
@@ -4891,7 +4891,7 @@
},
{
"kind": "conditional-branch",
"line": 596,
"line": 636,
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt",
"source": "Mute speaker",
"surface": "android",
@@ -4899,7 +4899,7 @@
},
{
"kind": "conditional-branch",
"line": 596,
"line": 636,
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt",
"source": "Unmute speaker",
"surface": "android",
@@ -4907,7 +4907,7 @@
},
{
"kind": "conditional-branch",
"line": 679,
"line": 719,
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt",
"source": "End Talk",
"surface": "android",
@@ -4915,7 +4915,7 @@
},
{
"kind": "conditional-branch",
"line": 691,
"line": 731,
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt",
"source": "Stop Dictation",
"surface": "android",
@@ -4923,7 +4923,7 @@
},
{
"kind": "ui-named-argument",
"line": 828,
"line": 868,
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt",
"source": "Voice setup",
"surface": "android",
@@ -4931,7 +4931,7 @@
},
{
"kind": "ui-named-argument",
"line": 991,
"line": 1038,
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt",
"source": "Live transcript",
"surface": "android",
@@ -4939,7 +4939,7 @@
},
{
"kind": "ui-named-argument",
"line": 994,
"line": 1041,
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt",
"source": "No transcript yet",
"surface": "android",
@@ -4947,7 +4947,7 @@
},
{
"kind": "ui-named-argument",
"line": 996,
"line": 1043,
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt",
"source": "Your words and OpenClaw replies will appear here.",
"surface": "android",
@@ -4955,7 +4955,7 @@
},
{
"kind": "conditional-branch",
"line": 1021,
"line": 1068,
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt",
"source": "You",
"surface": "android",
@@ -4963,7 +4963,7 @@
},
{
"kind": "ui-named-argument",
"line": 1039,
"line": 1086,
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt",
"source": "Sending",
"surface": "android",
@@ -4971,7 +4971,7 @@
},
{
"kind": "ui-named-argument",
"line": 1040,
"line": 1088,
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt",
"source": "OpenClaw is preparing a response.",
"surface": "android",
@@ -4979,7 +4979,7 @@
},
{
"kind": "ui-named-argument",
"line": 1049,
"line": 1103,
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt",
"source": "Permission needed",
"surface": "android",
@@ -4987,7 +4987,7 @@
},
{
"kind": "ui-named-argument",
"line": 1050,
"line": 1104,
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt",
"source": "Microphone access is needed.",
"surface": "android",
@@ -4995,7 +4995,7 @@
},
{
"kind": "ui-named-argument",
"line": 1052,
"line": 1106,
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt",
"source": "OpenClaw only listens when you start Talk or Dictation.",
"surface": "android",
@@ -5003,7 +5003,7 @@
},
{
"kind": "ui-named-argument",
"line": 1056,
"line": 1110,
"path": "apps/android/app/src/main/java/ai/openclaw/app/ui/VoiceScreen.kt",
"source": "Enable Microphone",
"surface": "android",

View File

@@ -377,9 +377,20 @@ private fun DictationScreen(
}
}
Row(verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(10.dp)) {
Row(
modifier = Modifier.fillMaxWidth(),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.spacedBy(10.dp),
) {
Icon(imageVector = Icons.Default.Info, contentDescription = null, modifier = Modifier.size(16.dp), tint = ClawTheme.colors.textMuted)
Text(text = "Tip: stop listening to send the captured turn.", style = ClawTheme.type.caption, color = ClawTheme.colors.textMuted)
Text(
text = "Tip: stop listening to send the captured turn.",
modifier = Modifier.weight(1f),
style = ClawTheme.type.caption,
color = ClawTheme.colors.textMuted,
maxLines = 2,
overflow = TextOverflow.Ellipsis,
)
}
Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.spacedBy(12.dp)) {
@@ -464,12 +475,28 @@ private fun TalkSessionScreen(
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceEvenly,
horizontalArrangement = Arrangement.spacedBy(12.dp),
verticalAlignment = Alignment.CenterVertically,
) {
TalkControl(icon = if (speakerEnabled) Icons.AutoMirrored.Filled.VolumeUp else Icons.AutoMirrored.Filled.VolumeOff, label = if (speakerEnabled) "Mute" else "Unmute", onClick = onToggleSpeaker)
TalkControl(icon = Icons.Default.PhoneDisabled, label = "End", primary = true, onClick = onEndTalk)
TalkControl(icon = Icons.Default.GraphicEq, label = "Voice", onClick = onOpenVoiceSettings)
TalkControl(
icon = if (speakerEnabled) Icons.AutoMirrored.Filled.VolumeUp else Icons.AutoMirrored.Filled.VolumeOff,
label = if (speakerEnabled) "Mute" else "Unmute",
modifier = Modifier.weight(1f),
onClick = onToggleSpeaker,
)
TalkControl(
icon = Icons.Default.PhoneDisabled,
label = "End",
primary = true,
modifier = Modifier.weight(1f),
onClick = onEndTalk,
)
TalkControl(
icon = Icons.Default.GraphicEq,
label = "Voice",
modifier = Modifier.weight(1f),
onClick = onOpenVoiceSettings,
)
}
}
}
@@ -520,9 +547,14 @@ private fun TalkControl(
icon: androidx.compose.ui.graphics.vector.ImageVector,
label: String,
primary: Boolean = false,
modifier: Modifier = Modifier,
onClick: () -> Unit,
) {
Column(horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.spacedBy(5.dp)) {
Column(
modifier = modifier,
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.spacedBy(5.dp),
) {
Surface(
onClick = onClick,
modifier = Modifier.size(ClawTheme.spacing.touchTarget),
@@ -535,7 +567,15 @@ private fun TalkControl(
Icon(imageVector = icon, contentDescription = label, modifier = Modifier.size(if (primary) 20.dp else 18.dp))
}
}
Text(text = label, style = ClawTheme.type.caption.copy(fontSize = 12.5.sp, lineHeight = 16.sp), color = ClawTheme.colors.textMuted)
Text(
text = label,
modifier = Modifier.fillMaxWidth(),
style = ClawTheme.type.caption.copy(fontSize = 12.5.sp, lineHeight = 16.sp),
color = ClawTheme.colors.textMuted,
textAlign = TextAlign.Center,
maxLines = 1,
overflow = TextOverflow.Ellipsis,
)
}
}
@@ -742,7 +782,7 @@ private fun VoiceModeRow(
) {
Surface(onClick = onClick, enabled = enabled, color = Color.Transparent, contentColor = ClawTheme.colors.text) {
Row(
modifier = Modifier.fillMaxWidth().heightIn(min = 54.dp).padding(horizontal = 0.dp, vertical = 7.dp),
modifier = Modifier.fillMaxWidth().heightIn(min = 58.dp).padding(horizontal = 0.dp, vertical = 8.dp),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.spacedBy(10.dp),
) {
@@ -767,9 +807,9 @@ private fun VoiceModeRow(
)
Text(
text = subtitle,
style = ClawTheme.type.caption,
style = ClawTheme.type.caption.copy(lineHeight = 16.sp),
color = ClawTheme.colors.textMuted,
maxLines = 1,
maxLines = 2,
overflow = TextOverflow.Ellipsis,
)
}
@@ -866,6 +906,7 @@ private fun VoiceProviderCard(
style = ClawTheme.type.caption,
color = ClawTheme.colors.textMuted,
maxLines = 1,
overflow = TextOverflow.Ellipsis,
)
}
}
@@ -897,12 +938,18 @@ private fun VoicePrimaryAction(
contentColor = ClawTheme.colors.primaryText,
) {
Row(
modifier = Modifier.fillMaxSize(),
modifier = Modifier.fillMaxSize().padding(horizontal = 14.dp),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.Center,
) {
Icon(imageVector = icon, contentDescription = null, modifier = Modifier.size(17.dp))
Text(text = text, modifier = Modifier.padding(start = 8.dp), style = ClawTheme.type.label)
Text(
text = text,
modifier = Modifier.padding(start = 8.dp),
style = ClawTheme.type.label,
maxLines = 1,
overflow = TextOverflow.Ellipsis,
)
}
}
}
@@ -1037,7 +1084,14 @@ private fun VoiceThinkingCard() {
ClawPanel {
Row(verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(10.dp)) {
ClawStatusPill(text = "Sending", status = ClawStatus.Warning)
Text(text = "OpenClaw is preparing a response.", style = ClawTheme.type.body, color = ClawTheme.colors.textMuted)
Text(
text = "OpenClaw is preparing a response.",
modifier = Modifier.weight(1f),
style = ClawTheme.type.body,
color = ClawTheme.colors.textMuted,
maxLines = 2,
overflow = TextOverflow.Ellipsis,
)
}
}
}