2010-09-18 4 views
0

В моем приложении я показываю таблицу, где отдельные ячейки являются редактируемыми текстовыми полями (т. Е. Объекты EditText). В настоящее время я пытаюсь вычислить соответствующие ширины для них.Как рассчитать соответствующую ширину поля?

Если я установил ширину как можно больше «Ems», так как отображаемый текст имеет символы, мои поля очень широки примерно в 2 раза, а таблица выглядит уродливой и тратит много драгоценного пространства экрана. Установка ширины в «Ems» по существу аналогична предположению наихудшего случая, то есть ширины строки в предположении, что она содержит только самые широкие символы шрифта, обычно «M» (отсюда и название метода), m ',' W 'или' _ '). Но в среднем строки содержат более узкие символы, поэтому большинство из этих полей наполовину пусты и слишком широки для их фактического содержания. Поэтому я отчаянно ищу способ рассчитать лучшую ширину подгонки, а не ту самую худшую ширину.

«Обычный» способ сделать это в Java (по крайней мере, в AWT или Swing) - запрашивать текущий шрифт виджета (фактически Font's FontMetrics) для вычисления и возврата ширины, которая будет необходима для отображения заданного строка в пикселях. Но как получить шрифт TextView? Я не нашел никакого способа получить шрифт (Text) View и/или рассчитать более подходящую ширину, учитывая фактическое содержимое текстовой строки ячейки. Как это сделать в Android?

Майкл

ответ

5

Я только что нашел "недостающее звено": <TextView>.getPaint() есть ответ!

«краска», то есть методы, такие как <Paint>.measureText(...), чтобы вычислить ширину в строке и < Paint>.ascent() и <Paint>.descent() для вычисления высоты строки в.

Michael

Смежные вопросы