标签: android-jetpack-compose-text

如何自动滚动到滚动日志类型文本可组合项的底部

我正在尝试实现Text日志类型消息的视图,其中对文本的每次更改都会将文本自动滚动到最后/新添加的文本行。例如,如果我的文本大小只适合 4 行:

log 1
log 2
log 3
log 4
Run Code Online (Sandbox Code Playgroud)

并且添加了一个新行,那么输出应该是:

log 2
log 3
log 4
log 5
Run Code Online (Sandbox Code Playgroud)

我想找到解决方案的具体问题是每次文本值发生变化时如何向下滚动到底部。我尝试了可接受的解决方案TextField,其中 aLaunchedEffect在组合阶段被触发,但在我的情况下不起作用:

@Composable
fun LogText(log: State<String>) {

  var logState = rememberScrollState(0)
  val coroutineScope = rememberCoroutineScope()

  LaunchedEffect(coroutineScope) {
      logState.scrollTo(logState.maxValue)
  }

  Text(
      text = log.value,
      modifier = Modifier.verticalScroll(logState),
  )
}
Run Code Online (Sandbox Code Playgroud)

没有LaunchedEffect更改文本以向下滚动到最新行。

android kotlin android-jetpack-compose android-jetpack-compose-text

3
推荐指数
1
解决办法
1378
查看次数

如何在 Jetpack Compose 中显示表情符号?

无法使用 Jetpack Compose 正确显示表情符号。

代码

    Text(
        text = data.emoji.character,
        textAlign = TextAlign.Center,
        fontSize = 28.sp,
    )
Run Code Online (Sandbox Code Playgroud) Jetpack 撰写文本

使用 Compose 时Text,我面临兼容性问题。
豆腐和多个表情符号按此处的说明出现。

为了解决这个问题,我尝试使用AppCompatTextViewin AndroidView

代码

    AndroidView(
        factory = { context ->
            AppCompatTextView(context).apply {
                text = data.emoji.character
                textSize = 28F
                textAlignment = View.TEXT_ALIGNMENT_CENTER
            }
        },
    )
Run Code Online (Sandbox Code Playgroud)

它显示表情符号没有任何兼容性问题,但表情符号淡出。

android emoji android-jetpack-compose android-jetpack-compose-text

3
推荐指数
1
解决办法
7081
查看次数

如何仅显示可组合项几秒钟?

我有一个Text可组合项Box

Box(modifier = Modifier)
) {
    Text(text = "BlaBla"    )
}
Run Code Online (Sandbox Code Playgroud)

如何仅显示框/文本几秒钟?

android-jetpack android-jetpack-compose android-jetpack-compose-text

3
推荐指数
1
解决办法
3914
查看次数

Jetpack Compose - 如果不指定 maxLines,TextOverflow.Ellipsis 将无法工作

我想显示 aText内部Card带有一些内部填充,有时文本不适合。我希望这个东西用省略号标记。但如果没有maxLines.

@Composable
fun CardWithText() {
    Card(
        modifier = Modifier
            .height(60.dp)
            .width(100.dp)
            .border(1.dp, Color.Black, RoundedCornerShape(0))
    ) {
        Card(
            modifier = Modifier
                .padding(8.dp)
                .fillMaxSize()
                .border(1.dp, Color.Black, RoundedCornerShape(0))
        ) {
            Text(
                text = "One two three four five six seven eight nine ten eleven twelve",
                maxLines = 2,
                overflow = TextOverflow.Ellipsis,
                color = Color.Black
            )
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

maxLines = 2

在此输入图像描述

使用maxLines = 3maxLines根本不使用

在此输入图像描述

kotlin android-jetpack android-jetpack-compose android-jetpack-compose-text

2
推荐指数
1
解决办法
2059
查看次数

如何在 Jetpack Compose 中为文本添加点线/虚线下划线?

我正在尝试获取自定义 TextDecoration - DashUnderline。现有的答案仅适用于一行,我需要为每一行文本添加虚线。

在此输入图像描述

对于 TextView 我有一个类,但我不知道如何将其转换为 Compose。

class DashedUnderlineSpan(
    textView: TextView, color: Int, thickness: Float, dashPath: Float,
    offsetY: Float, spacingExtra: Float
) :
    LineBackgroundSpan, LineHeightSpan {
    private val paint: Paint
    private val textView: TextView
    private val offsetY: Float
    private val spacingExtra: Float
    override fun chooseHeight(
        text: CharSequence, start: Int, end: Int, spanstartv: Int, v: Int,
        fm: Paint.FontMetricsInt
    ) {
        fm.ascent -= spacingExtra.toInt()
        fm.top -= spacingExtra.toInt()
        fm.descent += spacingExtra.toInt()
        fm.bottom += spacingExtra.toInt()
    }

    override fun drawBackground(
        canvas: Canvas, p: Paint, …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose android-jetpack-compose-text

2
推荐指数
1
解决办法
4148
查看次数

弯曲的文本 Jetpack 撰写

我想在 Jetpack Compose 中创建弯曲的文本,就像在“Material You”中一样。但是如何?例子: 时钟

android android-jetpack-compose android-jetpack-compose-text

0
推荐指数
1
解决办法
135
查看次数