fix: 开源许可列表项改用 Card(onClick) 以支持点击动画

原实现使用 Column + Modifier.clickable 在 LazyColumn 中无法显示
ripple 反馈。改用 Material3 Card 的 onClick 参数后,点击水波纹
动画正常显示。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
xfy 2026-06-01 11:42:49 +08:00
parent acb737dd25
commit c72120ee0a

View File

@ -1,13 +1,14 @@
package plus.rua.project.ui package plus.rua.project.ui
import androidx.compose.foundation.Canvas import androidx.compose.foundation.Canvas
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.material3.Card
import androidx.compose.material3.CardDefaults
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.IconButton import androidx.compose.material3.IconButton
@ -21,6 +22,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.graphics.StrokeCap import androidx.compose.ui.graphics.StrokeCap
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import plus.rua.project.util.logd
/** /**
* 开放源代码许可页面展示项目使用的第三方库及其许可证 * 开放源代码许可页面展示项目使用的第三方库及其许可证
@ -70,9 +72,17 @@ fun LicensesScreen(
.padding(innerPadding) .padding(innerPadding)
) { ) {
items(licenses) { item -> items(licenses) { item ->
Column { Card(
onClick = {
logd("LicensesScreen") { "clicked: ${item.library}" }
},
colors = CardDefaults.cardColors(
containerColor = MaterialTheme.colorScheme.surfaceContainerHigh
),
elevation = CardDefaults.cardElevation(defaultElevation = 0.dp),
modifier = Modifier.padding(horizontal = 16.dp, vertical = 4.dp)
) {
ListItem( ListItem(
modifier = Modifier.clickable { },
headlineContent = { headlineContent = {
Text( Text(
text = item.library, text = item.library,
@ -87,10 +97,6 @@ fun LicensesScreen(
) )
} }
) )
HorizontalDivider(
modifier = Modifier.padding(horizontal = 16.dp),
color = MaterialTheme.colorScheme.outlineVariant
)
} }
} }
} }