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