I have a TextView like below.
I used this code to set gray color for a part of the text.
// 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);
Now I want to set align for it. How to do? Android doesn’t have any span class for alignment. I can’t find out anything like “AlignmentSpan”.
Though its really late to answer, I assume that it might help someone at least. Add this to your code.
styledResultText.setSpan(new AlignmentSpan.Standard(Alignment.ALIGN_OPPOSITE), text.length() + 2, text.length() + 2 + dictionaryName.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
Alignment.ALIGN_OPPOSITE is the equivalent for right side.
Alignment.ALIGN_NORMAL is the equivalent for left side.
Note: This only works when there is at least 1 new-line character (\n) between the left & right-aligned text.
I think you should split the text into more than 1 string, put them into separated textview then align one by one.
Hope this helps.
If the resultText is always going to be right-aligned, add the gravity=”right” attribute to your
resultTextView instead of trying to right-align the text with styled spannable strings. This is assuming the grey text is within a separate TextView than your main text.
In xml for the result (grey) text:
<TextView android:id="@+id/resultTextView" android:gravity="right" android:layout_width="fill_parent" />