amcharts 未在 Android webview 中显示主题背景

amcharts not showing theme background in Android webview

我正在使用 webview 在 android 应用程序中托管 amcharts。代码的基本设置是我以编程方式形成一个 HTML 文档并将其加载到我的资产文件夹中。 amcharts 库位于资产文件夹的子目录中。到目前为止,此设置允许我使用本地提供的数据在 Web 视图中生成图表。为了更改图表的主题,我一直在遵循来自 amcharts websight http://www.amcharts.com/tutorials/working-with-themes/ 的教程。本教程允许我更改图表中条形图的外观,但背景保持不变。我还查看了一些帖子,报告说其他用户的主题无法正常工作。我的问题的不同之处在于根据主题绘制图形的方式是正确的。只是背景没有设置。

这是我用来构建测试图表数据的class。

public class AmChartsUtils {

public static String getTestHtml(String chartData) {

    chartData = chartData.replace("\n", "");

    return "<HTML><HEAD>" + getHeadContent(chartData)+ "<BODY>"+ getBodyContent() + "</BODY></HTML>";
}

private static String getHeadContent(String chartData) {
    return "<script src=\"js/amcharts.js\" type=\"text/javascript\"></script>"+
    "<script src=\"js/serial.js\" type=\"text/javascript\"></script>" +
    "<script src=\"js/themes/dark.js\" type=\"text/javascript\"></script>" +
    "<script src=\"js/themes/chalk.js\" type=\"text/javascript\"></script>" +
//      "<link rel=\"stylesheet\" href=\"style.css\" type=\"text/css\">" 
        getChartData(chartData);
}

private static String getChartData(String chartData) {

    StringBuilder sb = new StringBuilder();
    sb.append("<script type=\"text/javascript\">");

    sb.append("var chartData = [");
    sb.append(chartData);
    sb.append("];");
    sb.append(buildStartCommand());
    sb.append("</script>");


    return sb.toString();
}

private static String buildStartCommand() {
    StringBuilder sb = new StringBuilder();

    sb.append("if(document.body){");
    sb.append("document.body.style.backgroundColor = \"#282828\";");
//      sb.append("document.body.style.backgroundImage = \"url(\" + bgImage + \")\";");
    sb.append("}");
    sb.append("AmCharts.ready(function() {");

    sb.append("var chart = new AmCharts.AmSerialChart(AmCharts.themes.chalk);");
    sb.append("chart.dataProvider = chartData;");
    sb.append("chart.categoryField = \"country\";");
    sb.append("chart.angle = 30;");
    sb.append("chart.depth3D = 15;");
    sb.append("chart.backgroundColor = \"#282828\";");
    sb.append("chart.backgroundAloha = \"1.0\";");


    sb.append("var graph = new AmCharts.AmGraph();");
    sb.append("graph.valueField = \"visits\";");
    sb.append("graph.type = \"column\";");
    sb.append("chart.addGraph(graph);");

    sb.append("chart.write('chartdiv');");

    sb.append("});");
    return sb.toString(); 
}

private static String getBodyContent() {
    return "<div id=\"chartdiv\" style=\"width: 400px; height: 400px;\"></div>";
}

}

这是图表在屏幕上的显示方式。

预期结果是同一张图,黑板背景为深色。

有谁知道为什么后台进不去?提前感谢您收到的任何帮助。

您的代码中有错别字:

sb.append("chart.backgroundAloha = \"1.0\";");

应该这样读:

sb.append("chart.backgroundAlpha = \"1.0\";");

此外,alpha 是一个数字参数。我强烈建议您以数字形式提供。

我知道您不会在某些旧浏览器中显示它,这可能会因此而被抛弃,但最好让您的 JavaScript 应用程序尽可能强类型化。