Android Highcharts DialogFragment

Posted

技术标签:

【中文标题】Android Highcharts DialogFragment【英文标题】: 【发布时间】:2021-02-05 14:07:53 【问题描述】:

我不知道这是否可能,但我尝试从 Highchart android API 嵌入 Chartview,以便在 DialogFragment 中显示折线图。不幸的是,我没有成功,任何人都知道这是否可能,也许帮助我做到这一点。 这是我的代码,这是为了获取此对话框片段的测试代码。

ChartDialogFragment.java

public class ChartDialogFragment extends DialogFragment 
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) 
    // Inflate the layout to use as dialog or embedded fragment

    View view= inflater.inflate(R.layout.dialog, container, false);
    HIChartView chartView =view.findViewById(R.id.hc);
    HIOptions options = new HIOptions();

    HITitle title = new HITitle();
    title.setText("Logarithmic axis demo");
    options.setTitle(title);

    HIXAxis xaxis = new HIXAxis();
    xaxis.setTickInterval(1);
    options.setXAxis(new ArrayList<>(Collections.singletonList(xaxis)));

    HIYAxis yaxis = new HIYAxis();
    yaxis.setType("logarithmic");
    yaxis.setMinorTickInterval(0.1);
    options.setYAxis(new ArrayList<>(Collections.singletonList(yaxis)));

    HITooltip tooltip = new HITooltip();
    tooltip.setHeaderFormat("<b>series.name</b><br />");
    tooltip.setPointFormat("x = point.x, y = point.y");
    options.setTooltip(tooltip);

    HILine line1 = new HILine();
    line1.setPointStart(1);
    line1.setData(new ArrayList<>(Arrays.asList(1, 2, 4, 8, 16, 32, 64, 128, 256, 512)));

    options.setSeries(new ArrayList<>(Collections.singletonList(line1)));

    chartView.setOptions(options);

    return view;



/** The system calls this only when creating the layout in a dialog. */
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) 
    return dialog;

【问题讨论】:

嗨@Neaum,您的问题可能是由于您使用旧的Highcharts Android 版本。一些与动态图表大小相关的问题(例如在 DialogFragment 中)在以后的版本中得到了解决。 您好,好的,谢谢您的回答,我会尝试更新的版本! @ppotaczek 我正在使用新版本,但仍然面临同样的问题我添加了一个新的question 你可以看看吗? 【参考方案1】:

这是 dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_
    android:layout_>
    <ImageView
        android:layout_
        android:layout_
        android:scaleType="center"
        android:background="#FFFFBB33"
        android:contentDescription="@string/app_name" />
    <com.highsoft.highcharts.Core.HIChartView
        android:id="@+id/hc"
        android:layout_
        android:layout_ />
</LinearLayout>

Android 给我这个错误

E/AndroidRuntime: 致命异常: main 进程:com.example.myapplication,PID:25199 android.view.InflateException:com.example.myapplication:layout/dialog 中的二进制 XML 文件第 12 行:二进制 XML 文件第 12 行 com.example.myapplication:layout/dialog: 错误膨胀类 com.highsoft.highcharts.Core.HIChartView 引起:android.view.InflateException:com.example.myapplication:layout/dialog 中的二进制 XML 文件第 12 行:膨胀类错误 com.highsoft.highcharts.Core.HIChartView

如果我放了除 HIChartView 之外的任何其他内容,我的代码就可以工作,所以如果有人知道是否可以嵌入图表,那就太好了。 谢谢

【讨论】:

你成功解决了这个问题吗?

以上是关于Android Highcharts DialogFragment的主要内容,如果未能解决你的问题,请参考以下文章

如何在Android上导出Highstock / Highcharts图表?

android怎样自定义dialog

android循环遍历出多个全屏的dialog,这些dialog怎么关闭

46.Android 自己定义Dialog

Android dialog能设置延迟或者倒计时吗

android怎样自定义dialog