Android SDK: установка пунктирного подчеркивания для словаAndroid

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

Сообщение Anonymous »

Я уже реализовал некоторое расширение, используя существующие ForegroundColorSpan и BackgroundColorSpan. Теперь мне нужно выделить слово пунктирным подчеркиванием. Я погуглил и нашел пример: Как мне сделать пунктирную/пунктирную линию в Android?
Однако они применяют диапазон ко всему TextView, а не к выделенному фрагменту. Я попытался использовать Layout.getSelectionPath() и, похоже, неправильно понял, как работает этот метод, поскольку не вижу диапазона, который нужно применить.

Вот как я пытался его реализовать:

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

class DashedUnderlineSpan(private val layout: Layout) : LineBackgroundSpan, LineHeightSpan {

override fun chooseHeight(
text: CharSequence, start: Int, end: Int, spanstartv: Int, v: Int,
fm: FontMetricsInt
) {
val spacingExtra = 2f
fm.ascent = (fm.ascent - spacingExtra).toInt()
fm.top = (fm.top - spacingExtra).toInt()
fm.descent = (fm.descent + spacingExtra).toInt()
fm.bottom = (fm.bottom + spacingExtra).toInt()
}

override fun drawBackground(
canvas: Canvas, p: Paint, left: Int, right: Int, top: Int, baseline: Int,
bottom: Int, text: CharSequence, start: Int, end: Int, lnum: Int
) {
val paint = Paint()
paint.color = Color.GRAY
paint.style = Paint.Style.STROKE
paint.setPathEffect(DashPathEffect(floatArrayOf(0f, 30f), 0f))
paint.strokeWidth = 2f
val path = Path()
layout.getSelectionPath(0, 5, path)
canvas.drawPath(path, paint)
}
}
Как реализовать пунктирное подчеркивание?

Подробнее здесь: https://stackoverflow.com/questions/785 ... for-a-word
Ответить

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

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

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

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

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