我有一個表項,顯示兩個文本,一個左對齊,一個右對齊。目前,每個文本被放置在不同的TextView
:Android的 - 如何使用SpannableString放置文本
我想只有一個TextView
使用。對於這一點,我知道我可以使用SpannableString
,但我有幾個小時試圖找出沒有成功的方式。
誰能告訴我怎麼可以把兩種文本在同一TextView
對準一個向左,一個向右?
在此先感謝。
我有一個表項,顯示兩個文本,一個左對齊,一個右對齊。目前,每個文本被放置在不同的TextView
:Android的 - 如何使用SpannableString放置文本
我想只有一個TextView
使用。對於這一點,我知道我可以使用SpannableString
,但我有幾個小時試圖找出沒有成功的方式。
誰能告訴我怎麼可以把兩種文本在同一TextView
對準一個向左,一個向右?
在此先感謝。
這是我會做:
首先,你需要衡量右側的文本lenght。
float textsize = messageview.getPaint().getTextSize();
int lenght = int lenght = textsize * text.length();
在使用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;
}
}
設置跨度:
spantext.setSpan(new leadingMarginSpan2(1, getWidth() - lenght), 0, text.lenght, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
當你說右側文本的長度,你的意思是從右側文本的數量或字符? –
他代碼獲取文本大小設置,在縮放的像素,並且通過字符數相乘。結果是文本的寬度的近似值,但不是確切的。使用getTextBounds()會更準確,然後獲取Rect的寬度。你確定你不想使用兩個TextView嗎? :) –
@Jorge Gil是的,我的意思是數字。 – user1888162
你爲什麼要在同一個TextView的兩種文本?我不認爲你會找到一種簡單的方法來定位文本,而不使用單獨的視圖。你可以創建你自己的SpannableString,或者用一些黑色的空白內聯圖片大小來做,但是......爲什麼要麻煩? –