2010-10-06 109 views
10

對齊在TextView中的HTML.fromHtml()中工作嗎?Html.fromHtml中的對齊()

我試圖

<div align="center"><p>Test</p></div> 

和一些這方面的variaties,包括把對準接片沒有括號的段落標記,但沒有奏效。文字總是被留下。

感謝您的幫助!

你的。

回答

16

TextView中HTML文本不支持對齊方式。

+2

這是與所有這些樂於助人的人,並快速解答什麼一個不錯的網站!但是,後續行動顯而易見:支持哪些HTML? – Rene 2010-10-07 05:32:43

+8

支持的標籤有:p,div,em,b,strong,cite,dfn,i,big,small,font,blockquote,tt,a,u,sup,sub,h1到h6和img。請注意,您也可以通過調用fromHtml(String,ImageGetter,TagHandler)來提供您自己的TagHandler。這可以讓你添加對你想要的任何標籤的支持。 – 2010-10-07 18:05:36

+0

謝謝你。我想要一個居中對齊。這在文本視圖中似乎是不可能的,所以處理程序不會有幫助。 – Rene 2010-10-13 16:42:47

2

雖然可以使用網頁視圖,而不是一個TextView,並加載從放在資產文件的HTML使用對齊:

public class ViewWeb extends Activity { 
    WebView webview; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.webview); 

     webview = (WebView) findViewById(R.id.webView1); 
     webview.loadUrl("file:///android_asset/index.html"); 
    } 
} 
1

在HTML文本中,則不能設置對齊,但你可以使用一個SpannableStringBuilder代替。它很冗長,但它完成了工作。

E.g.

private Spanned getFormattedLabelText(String text, String subText) { 
    String fullText = String.format("%s\n%s", text, subText); 

    int fullTextLength = fullText.length(); 
    int titleEnd = text.length(); 

    SpannableStringBuilder s = new SpannableStringBuilder(fullText); 

    //Right align the text 
    AlignmentSpan alignmentSpan = new AlignmentSpan.Standard(Layout.Alignment.ALIGN_OPPOSITE); 
    s.setSpan(alignmentSpan, 0, fullTextLength, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

    //Make the title bold 
    s.setSpan(new StyleSpan(Typeface.BOLD), 0, titleEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); //bold 

    //make the subtext small 
    int smallTextSize = DisplayUtil.getPixels(TypedValue.COMPLEX_UNIT_SP, 10); 
    s.setSpan(new AbsoluteSizeSpan(smallTextSize), titleEnd + 1, fullTextLength, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); //bold 

    return s; 
} 

然後設置TextView的文本和往常一樣:

myTextView.setText(getFormattedLabelText("Title", "Subtitle")); 
5

要設置的TextView對齊第一設置TextView的寬度match_parent,然後在你的HTML標記使用文本對齊選項。是這樣的:

<div style="text-align: center">this text should be in center of view</div>

更新: 這種解決方案只是在Android的7及以上的工作:|

0

我認爲是更容易使用在中央的文字一個TextView財產重力...

0

對於API 24及以下,一gravity屬性添加到TextView佈局元素

 android:gravity="center_horizontal" 

對於API 24及以上版本可以在HTML中使用style

String centeredHtml = "<div style=\"text-align: center\">" + myFormattedHtml + "</div>"; 
    textView.setText(Html.fromHtml(centeredHtml)); 

gravity還支持多達至少26 API