Рассмотрим этот простой пример:Как LineSpace Влияет StaticLayout Рост в одной строке текста
У меня есть один текст строку: «Hello»
Я хочу измерить этот текст с помощью StaticLayout. Так что я написал что-то вроде этого:
StaticLayout layout = new StaticLayout("Hello", myTextView.getPaint(), myTextView.getWidth(), Layout.Alignment.NORMAL, 1, lineSpace, false);
В коде выше я изменил переменную lineSpace в цикле и каждый раз, когда необходимо войти высоту компоновщика:
for(int lineSpace=0; lineSpace<20;lineSpace++){
StaticLayout layout = new StaticLayout("Hello", myTextView.getPaint(), myTextView.getWidth(), Layout.Alignment.NORMAL, 1, lineSpace, false);
Log.d("TAG", "layout height: " + layout.getHeight());
}
Когда я запускаю этот код на устройстве с Android M Высота layout't не изменяется с несколькими значениями lineSpace. Но в более низких версиях макета андроидов, соответственно, изменялась высота строки.
Хотя, если ваш текст более чем одной строки, StaticLayout рассмотрит линейное пространство между двумя строками. Но, похоже, Android M не рассматривает линейное пространство для последней строки, но более низкие версии для Android.
Мой вопрос в следующем: после какой версии Android StaticLayout рассмотрим линейное пространство для последней строки? Могу ли я написал что-то вроде этого:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// in this version StaticLayout don't consider line space for last line
} else {
// in this version StaticLayout consider line space for last line
}
Я сомневаюсь в Android 5, но кажется, что количество строк не влияет на последнее дополнительное пространство. Я сделал несколько тестов об этом. – Hojjat
Кажется, что начиная с линейки в 5-дюймовом Android-пространстве для последней строки не учитывается. Спасибо – Hojjat
Я разместил некоторые вопросы о ImageSpan и StaticLayout в ссылках ниже, но никто еще не ответил мне. Если вы не возражаете, пожалуйста, взгляните на эти вопросы: http://stackoverflow.com/questions/41671028/how-textsize-and-linespace-affects-imagespan – Hojjat