From 4697e27eb4fd0b9e8e191a8296f2cd1d2db0d476 Mon Sep 17 00:00:00 2001 From: nk Date: Thu, 4 Jun 2026 14:27:41 +0300 Subject: [PATCH] =?UTF-8?q?fix(stations):=20=D1=81=D0=B2=D0=B5=D1=87=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=B2=D0=B5=D1=80=D1=85=D0=BD=D0=B5=D0=B3?= =?UTF-8?q?=D0=BE=20=D1=80=D1=8F=D0=B4=D0=B0=20=D0=BD=D0=B5=20=D0=BE=D0=B1?= =?UTF-8?q?=D1=80=D0=B5=D0=B7=D0=B0=D0=B5=D1=82=D1=81=D1=8F,=20=D1=83?= =?UTF-8?q?=D1=85=D0=BE=D0=B4=D0=B8=D1=82=20=D0=BF=D0=BE=D0=B4=20=D1=87?= =?UTF-8?q?=D0=B8=D0=BF=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Грид растянут под чипы (верхний contentPadding = высота чипов), а чипы вынесены отдельным слоем поверх грида с фоном-градиентом (вверху непрозрачный — маскирует прокрутку, книзу прозрачный). Свечение играющей станции из верхнего ряда больше не режется границей и мягко проступает из-под чипов категорий. Co-Authored-By: Claude Opus 4.8 --- .../com/radiola/ui/stations/StationsScreen.kt | 42 ++++++++++++++----- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/radiola/ui/stations/StationsScreen.kt b/app/src/main/java/com/radiola/ui/stations/StationsScreen.kt index 9a6a7fd..cd3fdbc 100644 --- a/app/src/main/java/com/radiola/ui/stations/StationsScreen.kt +++ b/app/src/main/java/com/radiola/ui/stations/StationsScreen.kt @@ -1,6 +1,7 @@ package com.radiola.ui.stations import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.background import androidx.compose.foundation.gestures.detectHorizontalDragGestures import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.grid.GridCells @@ -10,6 +11,8 @@ import androidx.compose.material3.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Brush +import androidx.compose.ui.graphics.Color import androidx.compose.ui.hapticfeedback.HapticFeedbackType import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.platform.LocalHapticFeedback @@ -75,16 +78,6 @@ fun StationsScreen( ) Spacer(Modifier.height(12.dp)) - // Жанры — всегда видны - if (tags.isNotEmpty()) { - FilterChips( - tags = tags, - selectedTag = selectedTag, - onTagSelected = viewModel::onTagSelected - ) - Spacer(Modifier.height(8.dp)) - } - // Область результатов — единственная прокручиваемая зона. // Горизонтальный свайп листает фильтры-чипы (вертикаль остаётся у грида). Box( @@ -145,7 +138,9 @@ fun StationsScreen( else -> LazyVerticalGrid( columns = GridCells.Fixed(2), modifier = Modifier.fillMaxSize(), - contentPadding = PaddingValues(start = 20.dp, end = 20.dp, top = 4.dp, bottom = 20.dp), + // top = высота чипов: грид уходит ПОД них, свечение верхнего ряда + // не обрезается и проступает за чипами. + contentPadding = PaddingValues(start = 20.dp, end = 20.dp, top = 54.dp, bottom = 20.dp), horizontalArrangement = Arrangement.spacedBy(14.dp), verticalArrangement = Arrangement.spacedBy(14.dp) ) { @@ -163,6 +158,31 @@ fun StationsScreen( } } } + + // Чипы-фильтры поверх грида. Фон-градиент: вверху непрозрачный + // (маскирует прокручиваемые карточки), книзу прозрачный — свечение + // верхнего ряда станций проступает ИЗ-ПОД чипов. + if (tags.isNotEmpty()) { + Box( + modifier = Modifier + .align(Alignment.TopStart) + .fillMaxWidth() + .background( + Brush.verticalGradient( + 0f to colors.bgBase, + 0.55f to colors.bgBase, + 1f to Color.Transparent + ) + ) + .padding(top = 2.dp, bottom = 12.dp) + ) { + FilterChips( + tags = tags, + selectedTag = selectedTag, + onTagSelected = viewModel::onTagSelected + ) + } + } } } }