Мне нужно использовать EditText
с Span для настройки текста. Для моего приложения мне нужны два параметра для моих промежутков:
- Строка
- Коэффициент высоты строки
Я пытался использовать интерфейс LineHeightSpan
для первого параметра вроде этого:
class LineSpaceSpan(private val space : Int) : LineHeightSpan {
override fun chooseHeight(
text: CharSequence?,
start: Int,
end: Int,
spanstartv: Int,
lineHeight: Int,
fm: Paint.FontMetricsInt?) {
fm?.apply {
descent += space
bottom += space
}
}
}
Но результат не совсем то, что я ожидал ...
Для Line Height factor
Я знаю, что в атрибуте XML есть EditText
, но мне нужно другое значение для каждой строки
У кого-нибудь были такие потребности? Спасибо за вашу помощь!
РЕДАКТИРОВАТЬ: Дополнительная информация
Я пытался решить свою проблему с помощью LineHeightSpan
, как указано выше, с помощью этого кода:
class LineSpaceSpan(private var lineRatio: Float, private var space : Int) : LineHeightSpan {
override fun chooseHeight(
text: CharSequence?,
start: Int,
end: Int,
spanstartv: Int,
lineHeight: Int,
fm: Paint.FontMetricsInt?) {
fm?.apply {
val currentHeight = it.descent - it.ascent
val targetHeight = lineRatio * currentHeight
val heightMargin = (targetHeight - currentHeight) / 2
// Set line height
it.descent += heightMargin.roundToInt()
it.ascent -= heightMargin.roundToInt()
// Set line space
it.descent += space
it.bottom += space
}
}
}
но у меня возникнут проблемы, если я изменю значения для lineRatio
или space
:
LineHeight
не изменится LineSpace
, вместо изменения пробела со следующим диапазоном, он перемещается вверх или вниз по тексту внутри текущего диапазона
РЕДАКТИРОВАТЬ: РЕШЕНИЕ
Я нашел проблему. .. Во-первых, код выше работает! Проблема возникла из-за моего выбора, я не выделил строку полностью ("\ n" в конце)