From 300922f96e2165e741a992393380d72e66464be7 Mon Sep 17 00:00:00 2001 From: HapeLee <63206378+HapeLee@users.noreply.github.com> Date: Thu, 18 Jun 2026 00:07:30 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=AD=97=E4=BD=93?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E4=B8=BB=E9=A2=98=E9=A2=9C=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/widget/components/FontSelectGrid.kt | 51 ++++++++++--------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/widget/components/FontSelectGrid.kt b/app/src/main/java/io/legado/app/ui/widget/components/FontSelectGrid.kt index 71a743148..dabc609f2 100644 --- a/app/src/main/java/io/legado/app/ui/widget/components/FontSelectGrid.kt +++ b/app/src/main/java/io/legado/app/ui/widget/components/FontSelectGrid.kt @@ -31,11 +31,12 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp -import androidx.compose.ui.viewinterop.AndroidView import io.legado.app.R import io.legado.app.help.loadFontFiles import io.legado.app.ui.theme.LegadoTheme @@ -139,11 +140,25 @@ private fun FontItem( isSelected: Boolean, onClick: () -> Unit, ) { + val context = LocalContext.current + val fontFamily = remember(item.uri) { + runCatching { + val uri = item.uri + val typeface: Typeface? = if (uri.scheme == "content") { + context.contentResolver.openFileDescriptor(uri, "r")?.use { + Typeface.Builder(it.fileDescriptor).build() + } + } else { + uri.path?.let { Typeface.createFromFile(it) } + } + typeface?.let { FontFamily(it) } + }.getOrNull() + } + Box( modifier = Modifier .fillMaxWidth() - .clip(RoundedCornerShape(8.dp)) - .background(LegadoTheme.colorScheme.surface) + .background(LegadoTheme.colorScheme.surface, RoundedCornerShape(8.dp)) .clickable(onClick = onClick) .padding(12.dp), ) { @@ -151,27 +166,13 @@ private fun FontItem( verticalAlignment = Alignment.CenterVertically, modifier = Modifier.height(48.dp) ) { - AndroidView( - factory = { ctx -> - android.widget.TextView(ctx).apply { - text = item.name - textSize = 14f - gravity = android.view.Gravity.CENTER - maxLines = 2 - ellipsize = android.text.TextUtils.TruncateAt.END - runCatching { - val uri = item.uri - val typeface: Typeface? = if (uri.scheme == "content") { - ctx.contentResolver.openFileDescriptor(uri, "r")?.use { - Typeface.Builder(it.fileDescriptor).build() - } - } else { - uri.path?.let { Typeface.createFromFile(it) } - } - this.typeface = typeface - } - } - }, + Text( + text = item.name, + style = LegadoTheme.typography.bodyMedium.copy(fontFamily = fontFamily), + color = LegadoTheme.colorScheme.onSurface, + maxLines = 2, + overflow = TextOverflow.Ellipsis, + textAlign = TextAlign.Center, modifier = Modifier.weight(1f), ) if (isSelected) {