我正在尝试实现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
无法使用 Jetpack Compose 正确显示表情符号。
代码
Text(
text = data.emoji.character,
textAlign = TextAlign.Center,
fontSize = 28.sp,
)
Run Code Online (Sandbox Code Playgroud)
使用 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
我有一个Text可组合项Box:
Box(modifier = Modifier)
) {
Text(text = "BlaBla" )
}
Run Code Online (Sandbox Code Playgroud)
如何仅显示框/文本几秒钟?
android-jetpack android-jetpack-compose android-jetpack-compose-text
我想显示 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 = 3或maxLines根本不使用
kotlin android-jetpack android-jetpack-compose android-jetpack-compose-text
我正在尝试获取自定义 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