Многократное выравнивание в 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».

Введите описание изображения здесь

Solutions Collecting From Web of "Многократное выравнивание в TextView?"

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

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

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

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

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

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

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

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

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