Как центрировать заголовок в TextView с 2 строками? - PullRequest
0 голосов
/ 11 августа 2010

Я знаю, как центрировать текст в TextView и как центрировать TextView внутри его родительского макета, но я ищу как центрировать заголовок (центрированный текст, но вторая строка начинается в той же точке).

То, что я ищу, это:

 |  Centered  |
 |  right!    |

или это:

|    Center    |

Не это (текст по центру):

 |     Too    |
 |  centered! |

или это (по центру TextView):

 |Centered    |
 |wrong!      |

или это (с отступом и слева):

|  |Also     |  |
|  |wrong!   |  |

Кто-нибудь понял это? Возможно ли это сделать без кодирования самой строки?

Ответы [ 3 ]

3 голосов
/ 11 августа 2010

Установите layout_width для fill_parent и android: сила тяжести (не layout_gravity) в центр. Это будет центрировать каждую строку текста по отдельности в текстовом представлении, размер которого совпадает с родительским.

1 голос
/ 11 августа 2010

Используйте атрибут android:padding, чтобы добавить отступы, и android:gravity="left" для вашего TextView.

Кстати: также обратите внимание, что вы всегда можете использовать Html в вашем TextView, т.е.

txtView.setText( Html.fromHtml("Centered<br/>right!") );

но вам это может не понадобиться, если ширина кнопки установлена ​​таким образом, что она будет автоматически разбивать слово.

Если вы хотите центрировать текст в зависимости от длины двух строк (из которых вы не знаете, какая из них длиннее), вам на самом деле нужно сначала рассчитать ширину, а затем выполнить корректировку для отступа соответственно , Вы не можете просто посчитать количество букв, чтобы узнать более длинное слово, поскольку каждая буква имеет разную ширину (по крайней мере, если вы используете DroidSans в качестве шрифта по умолчанию).

Поэтому разделите вашу строку с помощью s.split ("") и затем сначала вычислите ширину обеих строк:

txtText.getPaint().measureText(s[0])
txtText.getPaint().measureText(s[1])

, а затем, в зависимости от возвращаемого значения, установите левое заполнение текстового представления соответственно.

0 голосов
/ 11 августа 2010

Будет ли добавление еще одного TextView решить проблему?Я имею в виду, определить два TextView: один по центру, а другой по правому краю.

...