【问题标题】:Properly displaying chart in Android fragment在 Android 片段中正确显示图表
【发布时间】:2014-05-01 19:51:08
【问题描述】:

我正在尝试在我的一个片段中设置图表。

问题是当我调用应该调用图表的片段时,我没有得到正确的布局。

这是发生了什么:

我不明白为什么当我尝试添加图表时布局会调整大小。 我正在使用图表引擎。

这是我的“graph_fragment”的 XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <LinearLayout
        android:id="@+id/linearLayout_graphFragment_conteiner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:orientation="vertical" >
    </LinearLayout>

</RelativeLayout>

这是我在片段中所做的(BaseData 扩展片段):

public class LineGraphFragment extends BaseData {

    private GraphicalView mChartView;

    public LineGraphFragment() {
        // Empty constructor required for fragment subclasses
    }

    //----------------------------------------------------
    //Chart variables

    private TimeSeries series; //A single series or line is defined.
    private XYSeriesRenderer renderer; //A single render is responsible for a single series or line.
    private XYMultipleSeriesDataset mSeriesDataset; //All series or lines are added here to be displayed later.
    private XYMultipleSeriesRenderer mSeriesRendered; // All renders are added here. 
    //----------------------------------------------------




    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup conteiner, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.graph_fragment, conteiner, false);
    }

    @Override
    public void onStart(){
        super.onStart();

        Log.w("LineGraphFragment","Inside onStart");

        displayChart();
    }



    private void initializeChartValues() {
        int[] x = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
        int[] y = { 30, 34, 45, 57, 77, 90, 123, 23, 123, 92 };

        //Fill the series with data
        series = new TimeSeries("Line1");
        for (int i = 0; i < x.length; i++) {
            series.add(x[i], y[i]);
        }
        //Define a render for the series
        renderer = new XYSeriesRenderer();

        //Add the series in multiple series dataset
        mSeriesDataset = new XYMultipleSeriesDataset();
        mSeriesDataset.addSeries(series);

        //Add the renderer in the multiple series renderer
        mSeriesRendered = new XYMultipleSeriesRenderer();
        mSeriesRendered.addSeriesRenderer(renderer);
    }



    // WOrking on half screen
    private void displayChart() {

        //First initialize the values of the chart.
        initializeChartValues();

        //Define the parent where the chart will go
        LinearLayout chartContainer;
        chartContainer = (LinearLayout) getActivity().findViewById(R.id.linearLayout_graphFragment_conteiner);

        //Create and add the chart to the parent
        mChartView = ChartFactory.getLineChartView(getActivity(), mSeriesDataset, mSeriesRendered);
        chartContainer.addView(mChartView);

        //  viewParrent.addView(chartContainer);


    }
}

任何帮助和信息将不胜感激。

【问题讨论】:

    标签: android android-fragments charts fragment


    【解决方案1】:

    我实际上设法解决了我的问题。

    如果有人感兴趣,这里是示例代码:

    //----------------------------------------------------
        //Chart variables
    
        private GraphicalView mChartView;
        private TimeSeries series; //A single series or line is defined.
        private XYSeriesRenderer renderer; //A single render is responsible for a single series or line.
        private XYMultipleSeriesDataset mSeriesDataset; //All series or lines are added here to be displayed later.
        private XYMultipleSeriesRenderer mSeriesRendered; // All renders are added here. 
    
        //----------------------------------------------------
    
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.graph_fragment, container, false);
    
            // add the data here if necessary
            // ...
            LinearLayout layout = (LinearLayout) view.findViewById(R.id.graph1);
    
            layout.addView(displayChart());
    
            return view;
        }
    
    
    
        private void initializeChartValues() {
            int[] x = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
            int[] y = { 30, 34, 45, 57, 77, 90, 123, 111, 123, 92 };
    
            //Fill the series with data
            series = new TimeSeries("Line1");
            for (int i = 0; i < x.length; i++) {
                series.add(x[i], y[i]);
            }
            //Define a render for the series
            renderer = new XYSeriesRenderer();
            renderer.setColor(Color.RED);
            renderer.setPointStyle(PointStyle.SQUARE);
            renderer.setFillPoints(true);
    
    
            //Add the series in multiple series dataset
            mSeriesDataset = new XYMultipleSeriesDataset();
            mSeriesDataset.addSeries(series);
    
            //Add the renderer in the multiple series renderer
            mSeriesRendered = new XYMultipleSeriesRenderer();
            mSeriesRendered.addSeriesRenderer(renderer);
            //Customize graph itself
            mSeriesRendered.setChartTitle("Тегло");
        }
    
    
        // WOrking on half screen
        private GraphicalView displayChart() {
    
            //First initialize the values of the chart.
            initializeChartValues();
    
            //Define the parent where the chart will go
            LinearLayout chartContainer;
            chartContainer = (LinearLayout) getActivity().findViewById(R.id.linearLayout_graphFragment_conteiner);
    
            //Create and add the chart to the parent
            mChartView = ChartFactory.getLineChartView(getActivity(), mSeriesDataset, mSeriesRendered);
    
    
            return mChartView;
    
        }
    

    我实际上从不使用 onStart。 我也在 onCreateView 中初始化图表,然后在 onCreateView 中返回视图

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-07
      • 1970-01-01
      • 1970-01-01
      • 2016-09-15
      相关资源
      最近更新 更多