如何在textview中显示Html表?

时间:2015-05-19 12:10:02

标签: android html textview

我想使用以下代码在textview中显示文本:

Html.fromHtml("<html><body><table style=width:100%><tr><td><B>No</td><td><B>Product Name</td><td><B>Qty</td><td><B>Amount</td></tr></body></html>");

但结果的格式不正确,结果如下:

NoPRoductNameQtyAmount

请在此代码中提出我的错误。

4 个答案:

答案 0 :(得分:8)

fromHtml()不支持<table>及相关标签。您的选择是:

  1. 重新格式化您的文字以避免表格

  2. 使用WebView呈现您的HTML表格

  3. 为您的表格使用原生小部件和容器(例如TableLayout

答案 1 :(得分:0)

我没有在TextView中使用html表格,而是将普通文本格式化为像文本一样的表格,在文本中添加空白以获得整洁的结构。

这是代码:

String lines[] = getItem(position).toString().split("\n");
String print = "";
String parts[] = null;
String tmp = "";
int weight = 0;
for (int i=0; i < lines.length; i++) {
   if (!lines[i].equalsIgnoreCase("")) {
       parts = lines[i].split(":", 2);
       tmp = "";
       Paint textPaint = text.getPaint();
       float width = textPaint.measureText(parts[0]);
       float wslength = textPaint.measureText(" ");
       for (int j = 0; j < (220 - Math.round(width))/Math.round(wslength); j++) {
           tmp = tmp + " ";
       }
       if (print.equalsIgnoreCase("")) {
           print = print + parts[0] + tmp + Html.fromHtml(""+parts[1]+"");
       } else {
           print = print + "\n" + parts[0] + tmp + parts[1];
       }
   }
}

您可以在此处找到更多解释: http://blog.blupixelit.eu/convert-text-to-table-in-android-sdk/

希望这有帮助。

答案 2 :(得分:0)

如何更改仅通过webview渲染表格,其他标签通过textview渲染的方式?最近,我完成了一个演示来克服这个问题。因此,我们首先需要将<table>与其他受支持的标签分开,这样会将“ <p>**<p> blabala <table>balabla </table> blabla <p>**<p>”更改为三个单独的字符串

  • <p>**<p> blabala
  • <table>balabla </table>
  • blabla <p>**<p>

然后只有<table>个包含标签的标签由webview呈现,其他标签由textview呈现 而android中的结果将是:

 <ScrollView> 
   <LinearLayout>
    <TextView> 
    <WebView>  --- let the webview ATMOST measured
    <TextView> 

所以我认为一切都很好。检查this commit 了解详情

答案 3 :(得分:-1)

HtmlTextView最近添加了对HTML表的基本支持。这是有限的,但如果您需要担心的是<table><td><tr><th>,它们就可以解决问题。