Я пытаюсь создать текстовое представление, которое масштабирует содержимое таким образом, чтобы все это отображалось, без обрезки, многострочного текста или элипсиса.
Я быстро пробежусь по макету, просто чтобы поместить его в контекст.
* Существует вид сетки с несколькими строками и столбцами.* Элементы для сетки отображаются с помощью адаптера, который возвращает (псевдо-разметка :)): -
<LinearLayout Orientation=vertical>
<MyCustomTextview name='titletext' Not multiline />
<MyCustomTextview name='itemtext' Not multiline />
</LinearLayout>
Я попытался переопределить onSizeChanged, так как именно здесь меня указали несколько результатов Google, и я начал с:-
...
if (this.getLinecount() > 1)
{
this.setTextSize(... currentsize -10);
}
...
и это дало мне действительно маленький текст, где он мог бы появиться более чем на одной строке, поэтому я знал, что могу изменить размер и выяснить, правильно ли в TextView более одной строки.
поэтому я перешел к: -
while (this.getLinecount() > 1)
{
this.setTextSize(... currentsize - 1);
}
, который я ожидал запустить до тех пор, пока текст не стал достаточно маленьким, но после вызова setTextSize getLineCount () возвращает 0, я считаю, что это потому, что ему нужнопересчитать размер текста, чтобы я попробовал различные комбинации refreshLayout (), forceLayout () и invalidate () безрезультатно.
У меня есть идея для лучшего подхода, но я не знаю, если этолегко достижимо: -
onSizeChanged вызывается после того, как он добавлен в Gridview адаптером, поэтому я выполню там свой код, но возможно ли следующее и как: -
- TextView настроен на ширину родительской заливки. Могу ли я точно определить размер пикселя ширины доступного пространства для текста?(Я полагаю, что могут быть дополнения и тому подобное)
- Затем я намереваюсь использовать measureText (String), чтобы увидеть, подойдет ли текст, если нет, уменьшите размер и проверьте еще раз.
Я считаю, что это было бы хорошим решением, но я не уверен в точном измерении доступного пространства, и если бы выбранное мной событие было бы лучшим.
Любая помощь будет принята с благодарностью.