fix(player): не обрезать низ плеера на телефонах (скролл + компактнее)

Плеер живёт в ModalBottomSheet без скролла. На телефонах с высоким dpi
высоты в dp меньше (480dpi → ~800dp против ~914dp у эмулятора 420dpi),
из-за чего низ — кнопка «Текст песни» — обрезался шторкой и был виден
лишь полоской. Добавлен verticalScroll (низ доступен на любом экране) и
ужата высота (обложка 220→190, крупные отступы), чтобы влезало без скролла.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
nk
2026-06-04 12:51:15 +03:00
parent c77c131a09
commit 6aa2588641

View File

@@ -8,6 +8,8 @@ import androidx.compose.animation.animateColorAsState
import androidx.compose.animation.core.tween import androidx.compose.animation.core.tween
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.navigationBarsPadding
@@ -87,6 +89,9 @@ fun PlayerBottomSheet(
.fillMaxWidth() .fillMaxWidth()
.background(colors.bgBase) .background(colors.bgBase)
.navigationBarsPadding() .navigationBarsPadding()
// Скролл — чтобы на телефонах с меньшей высотой в dp (высокий dpi)
// низ плеера (кнопка «Текст песни») не обрезался шторкой.
.verticalScroll(rememberScrollState())
.padding(horizontal = 24.dp, vertical = 20.dp), .padding(horizontal = 24.dp, vertical = 20.dp),
horizontalAlignment = Alignment.CenterHorizontally horizontalAlignment = Alignment.CenterHorizontally
) { ) {
@@ -129,7 +134,7 @@ fun PlayerBottomSheet(
// Обложка станции/трека // Обложка станции/трека
Box( Box(
modifier = Modifier modifier = Modifier
.size(220.dp) .size(190.dp)
.clip(RoundedCornerShape(24.dp)) .clip(RoundedCornerShape(24.dp))
.background(colors.surface2), .background(colors.surface2),
contentAlignment = Alignment.Center contentAlignment = Alignment.Center
@@ -151,7 +156,7 @@ fun PlayerBottomSheet(
) )
} }
} }
Spacer(Modifier.height(22.dp)) Spacer(Modifier.height(14.dp))
// Название трека и исполнитель с Crossfade при смене // Название трека и исполнитель с Crossfade при смене
Crossfade( Crossfade(
@@ -189,7 +194,7 @@ fun PlayerBottomSheet(
playing = isPlaying, playing = isPlaying,
color = colors.accent color = colors.accent
) )
Spacer(Modifier.height(24.dp)) Spacer(Modifier.height(16.dp))
// Управление воспроизведением // Управление воспроизведением
Row( Row(