2009-07-14 52 views

回答

8

您應該可以使用Html.fromHtml()將原始HTML轉換爲Spanned對象,您可以在按鈕的setText()調用中使用該對象。正如Html文檔所述,「並非所有的HTML標記都受支持」。

+0

有沒有辦法做到這一點,而不使用Java代碼?我有靜態文本編碼資源文件: <按鈕 機器人:ID = 「@ + ID/x_button」 的android:layout_width = 「WRAP_CONTENT」 機器人:layout_height = 「WRAP_CONTENT」 機器人:文本=「@字符串/ X」 <字符串名稱= 「×」>

XX YY

user121196 2009-07-14 22:16:24

+0

不,我知道的。 – CommonsWare 2009-07-14 23:48:16

+0

您應該可以使用@ commonsware.com使用的相同方法調用,並從資源文件中獲取字符串。應該是Context.getString(R.id.x) – 2009-07-15 04:53:24

3

馬克的答案像往常一樣是現貨。這裏有一個比較完整的例子供參考(這是文檔中令人困惑的部分)。 (是的,我知道這個例子中沒有使用Button,但這是一個我不得不派上用場,這是同樣的想法。)

字符串需要的資源:

<?xml version="1.0" encoding="utf-8"?> 
    <resources> 
    <string name="mystring">  
     You can use regular text, and escaped HTML markup 
     &lt;br /&gt;&lt;br /&gt; 
     A simple BOLD example &lt;b&gt;StackOverflow&lt;/b&gt;. 
    </string> 
    </resources> 

然後獲取資源,並使用Html.fromHtml()(如果您使用的是EditText,你還需要確保緩存被設置爲SPANNABLE):

public class MyActivity extends Activity { 
    TextView myTextView; 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.about);  

      myTextView = (TextView) this.findViewById(R.id.mytextview); 
      myTextView.setText(Html.fromHtml(getResources().getString(R.string.mystring)), 
          TextView.BufferType.SPANNABLE); 
     } 
     ... 

最後,注意所有HTML行不通的,當然。所以根據你的要求,這可能不是完全有用的。如果您嘗試使用鏈接(定位標記)並且希望它響應被點擊,請參閱此issue。對於簡單的東西,請參見Linkify

1

這兩個答案也是有效的,你也可以這樣做。我試圖做同樣性質的東西,發現我與CSS一起HTML沒有得到正確格式化,所以我把繩子,裝成這樣的網頁流量:

WebView webview = (WebView) findViewById(R.id.MyWebview); 
String summary = "<html><body>You scored <b>192</b> points.</body></html>"; 
webview.loadData(summary, "text/html", "utf-8"); 

,並承認所有樣式並正確格式化html。更多來自android的參考HERE