Многократное выравнивание в TextView? - PullRequest
19 голосов
/ 11 июля 2011

У меня есть TextView, как показано ниже.Я использовал этот код, чтобы установить серый цвет для части текста.

// Prepare result text.
final String resultText = text + "\n\n" + dictionaryName;
final SpannableString styledResultText = new SpannableString(resultText);
styledResultText.setSpan(new ForegroundColorSpan(Color.GRAY), text.length() + 2, text.length() + 2 + dictionaryName.length(), 0);
resultTextView.setText(styledResultText);

Теперь я хочу установить выравнивание для него.Как сделать?Android не имеет никакого класса span для выравнивания.Я не могу найти ничего подобного "AlignmentSpan".

enter image description here

Ответы [ 4 ]

50 голосов
/ 23 июля 2012

Хотя уже очень поздно отвечать, я предполагаю, что это может кому-то помочь, по крайней мере. Добавьте это к своему коду.

styledResultText.setSpan(new AlignmentSpan.Standard(Alignment.ALIGN_OPPOSITE), 
text.length() + 2, text.length() + 2 + dictionaryName.length(), 
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

Alignment.ALIGN_OPPOSITE является эквивалентом для правой стороны.

Alignment.ALIGN_NORMAL является эквивалентом для левой стороны.

2 голосов
/ 12 декабря 2012

Я думаю, вы должны разбить текст на более чем 1 строку, поместить их в разделенный текстовый вид, затем выровнять по одному.

Надеюсь, это поможет.

0 голосов
/ 11 июля 2011

Если resultText всегда будет выровнен по правому краю, добавьте атрибут gravity = "right" к вашему resultTextView вместо того, чтобы пытаться выровнять текст по правому краю с помощью вводимых строк. Это при условии, что серый текст находится внутри отдельного TextView, чем ваш основной текст.

В xml для результата (серый) текст:

<TextView android:id="@+id/resultTextView" 
    android:gravity="right" 
    android:layout_width="fill_parent" />
0 голосов
/ 11 июля 2011

AFAIK это невозможно.Я бы действительно хотел, чтобы эти два поля были разными.Кажется, что у вас есть разделенные данные, почему бы просто не создать отдельный TextView для серого текста (dictionaryName)?

Я попытался использовать spannables как можно меньше по этой причине.

...