Пустое пространство при создании пользовательского компонуемого рендеринга текстаAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Пустое пространство при создании пользовательского компонуемого рендеринга текста

Сообщение Anonymous »

Я пытался создать собственный составной рендеринг текста, используя составной элемент Canvas. Однако я не понимаю, как TextMeasurer вычисляет окончательную высоту составного элемента.
Вот минимальный пример того, что я пробовал до сих пор.

Код: Выделить всё

@Composable
fun ShyText(
text: String,
modifier: Modifier = Modifier
) {
val textMeasurer = rememberTextMeasurer()
val measuredText =
textMeasurer.measure(
AnnotatedString(text),
overflow = TextOverflow.Ellipsis,
constraints = Constraints.fixedWidth(1080),
style = TextStyle(
fontSize = 18.sp,
)
)
Canvas(
Modifier
.fillMaxWidth()
.height(measuredText.size.height.dp) //I think the bug is coming from this line.
.background(Color.DarkGray)
) {
drawText(
measuredText,
)

}
}
Вот как используется составной элемент.

Код: Выделить всё

ShyTextTheme {
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
Column(Modifier.padding(innerPadding)) {
ShyText(
text = sampletext,
)
Text("text")
}
}
}
Это текущий результат
[img]https://i.sstatic.net /md33qEGD.png[/img]

Я пытаюсь отобразить без пустого пространства над «текстом» и последней строкой абзаца.
Я хотел бы знать, почему отображается пустое пространство. (Серый фон предназначен только для тестирования)

Подробнее здесь: https://stackoverflow.com/questions/790 ... composable
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»