У меня есть ImageSpan
внутри фрагмента текста. Что я заметил, так это то, что окружающий текст всегда рисуется внизу текстовой строки — если быть более точным, размер текстовой строки увеличивается вместе с изображением, но базовая линия текста не смещается вверх. Когда изображение заметно больше размера текста, эффект довольно неприглядный.
Вот пример, контур показывает границы TextView
:
Я пытаюсь центрировать окружающий текст по вертикали относительно отображаемого изображения. Вот тот же пример с синим текстом, показывающим нужное место:
Вот ограничения, которыми я связан:
- Я не могу использовать составные чертежи. Изображения должны быть в состоянии быть показаны между словами.
- Текст может быть многострочным в зависимости от содержимого. Я не контролирую это.
- Мои изображения больше окружающего текста, и я не могу уменьшить их размер. Хотя пример изображения выше больше, чем фактические изображения (чтобы продемонстрировать текущее поведение), фактические изображения все еще достаточно велики, чтобы эта проблема была заметна.
Я пытался использовать атрибут android:gravity="center_vertical"
в TextView, но это не имеет никакого эффекта. Я полагаю, что это просто центрирует текст строки по вертикали, но внутри текстовой строки текст по-прежнему рисуется внизу.
Моя текущая мысль состоит в том, чтобы создать собственный диапазон, который смещает базовую линию текста в зависимости от высоты строки и текущего размера текста. Этот диапазон будет охватывать весь текст, и мне нужно будет вычислить пересечение с ImageSpan
, чтобы избежать смещения изображений. Это звучит довольно сложно, и я надеюсь, что кто-то может предложить другой подход.
Любая помощь приветствуется!