Подтвердить что ты не робот

Многократное выравнивание в TextView?

У меня есть 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 не имеет какого-либо класса диапазона для выравнивания. Я не могу найти ничего подобного "AlignmentSpan".

enter image description here

4b9b3361

Ответ 1

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

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

Ответ 2

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

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 является эквивалентом для левой стороны.

Ответ 3

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

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

Ответ 4

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

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

<TextView android:id="@+id/resultTextView" 
    android:gravity="right" 
    android:layout_width="fill_parent" />