2014-05-01 43 views
-2

我想在我的片段之一中設置圖表。在Android片段中正確顯示圖表

問題是當我打電話給圖表應該被稱爲我沒有得到正確的佈局的片段。

這裏是發生了什麼:

enter image description here

我不明白,爲什麼當我嘗試添加布局調整大小的圖表。 即時通訊使用aChartEngine。

這裏是我的 「graph_fragment」

<?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> 

的XML和這裏是我在我的片段裏面做(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); 


    } 
} 

任何幫助和信息將非常感激。

回答

0

我似乎設法解決我的問題。

下面是示例代碼,如果有人有興趣:

//---------------------------------------------------- 
    //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; 

    } 

我actualy從來沒有使用在onStart。 另外,我在onCreateView中初始化圖表,然後返回onCreateView中的視圖