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:
@@ -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(
|
||||||
|
|||||||
Reference in New Issue
Block a user