This is what i would do:
First you need measure lenght of right side text.
float textsize = messageview.getPaint().getTextSize();
int lenght = int lenght = textsize * text.length();
After that use leadingMarginSpan:
public class leadingMarginSpan2 implements LeadingMarginSpan.LeadingMarginSpan2{
private int margin;
private int lines;
public leadingMarginSpan2(int lines, int margin){
this.lines = lines;
this.margin = margin;
}
@Override
public void drawLeadingMargin(Canvas arg0, Paint arg1, int arg2,
int arg3, int arg4, int arg5, int arg6, CharSequence arg7,
int arg8, int arg9, boolean arg10, Layout arg11) {
// TODO Auto-generated method stub
}
@Override
public int getLeadingMargin(boolean first) {
if(first){
return margin;
}
else{
return 0;
}
}
@Override
public int getLeadingMarginLineCount() {
return lines;
}
}
Set span:
spantext.setSpan(new leadingMarginSpan2(1, getWidth() - lenght), 0, text.lenght, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);