2016-02-26 5 views
1

enter image description hereAndroid - Круговая диаграмма

Почему диаграмма круговой диаграммы настолько мала. Я использую библиотеку mpandroidchartlibrary-2-1-2.jar, и у меня есть activity_main.xml android: id = "@ + id/mainLayout". Кто-нибудь может понять, в чем проблема?

public class MainActivity extends Activity{ 

private RelativeLayout mainLayout; 
private PieChart mChart; 


DatabaseHelper datahelper = new DatabaseHelper(this); 

private float[] yData = {5, 10, 15, 30, 40}; 
private String[] xData = { "Sony", "Huawei", "LG", "Apple", "Samsung"}; 




@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    mainLayout = (RelativeLayout)findViewById(R.id.mainLayout); 
    mChart = new PieChart(this); 

    mainLayout.addView(mChart); 
    mainLayout.setBackgroundColor(Color.LTGRAY); 

    mChart.setUsePercentValues(true); 
    mChart.setDescription("Smartphones Market Share"); 

    mChart.setDrawHoleEnabled(true); 
    mChart.setHoleColorTransparent(true); 
    mChart.setHoleRadius(7); 
    mChart.setTransparentCircleRadius(10); 

    mChart.setRotationAngle(0); 
    mChart.setRotationEnabled(true); 

    mChart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() { 

     @Override 
     public void onValueSelected(Entry e, int dataSetIndex, Highlight h) { 
      if (e == null) 
       return; 

      Toast.makeText(Main6Activity.this, xData[e.getXIndex()] + " = " + e.getVal() + "%", Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void onNothingSelected() { 


     } 


    }); 


    addData(); 
    Legend l = mChart.getLegend(); 
    l.setPosition(Legend.LegendPosition.RIGHT_OF_CHART); 
    l.setXEntrySpace(7); 
    l.setYEntrySpace(5); 






} 

private void addData() 
{ 
    ArrayList<Entry> yVals1 = new ArrayList<Entry>(); 
    for (int i =0; i <yData.length; i++) 

     yVals1.add(new Entry(yData[i],i)); 

    ArrayList<String> xVals = new ArrayList<String>(); 
    for (int i =0; i<xData.length; i++) 
     xVals.add(xData[i]); 

    PieDataSet dataSet = new PieDataSet(yVals1,"Market Share"); 
    dataSet.setSliceSpace(3); 
    dataSet.setSelectionShift(5); 

    ArrayList<Integer> colors = new ArrayList<Integer>(); 
    for (int c : ColorTemplate.VORDIPLOM_COLORS) 
     colors.add(c); 

    for (int c : ColorTemplate.JOYFUL_COLORS) 
     colors.add(c); 

    for (int c : ColorTemplate.COLORFUL_COLORS) 
     colors.add(c); 

    for (int c : ColorTemplate.LIBERTY_COLORS) 
     colors.add(c); 

    for (int c : ColorTemplate.PASTEL_COLORS) 
     colors.add(c); 

    colors.add(ColorTemplate.getHoloBlue()); 
    dataSet.setColors(colors); 

    PieData data = new PieData(xVals,dataSet); 
    data.setValueFormatter(new PercentFormatter()); 
    data.setValueTextSize(11f); 
    data.setValueTextColor(Color.GRAY); 

    mChart.setData(data); 

    mChart.highlightValues(null); 

    mChart.invalidate(); 


}} 

ответ

0

Я была такая же проблема Манто, вы можете просто решить, добавив еще один макет в RelativeLayout т.е. <FrameLayout> и попытаться нарисовать диаграмму в FrameLayout InstEd напрямую в RelativeLayout макете.

Изменения в вашем XML: Он должен выглядеть следующим образом :)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 

    <FrameLayout 
     android:id="@+id/mainLayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_centerInParent="true" 
     > 
    </FrameLayout> 

</RelativeLayout> 

Изменения в Java файле:

1. private RelativeLayout mainLayout;к ->private FrameLayout mainLayout;

  1. mainLayout = (RelativeLayout)findViewById(R.id.mainLayout);к ->mainLayout = (FrameLayout)findViewById(R.id.mainLayout);
0

я решена с:

ViewGroup.LayoutParams lp = barchart.getLayoutParams(); 
    lp.height=Extra.convertDpToPixel(yVals1.size()*150,this); 
    barchart.setLayoutParams(lp); 

Befor barchart.setData(data); barchart.groupBars(0, 0.03f, 0.03f); barchart.invalidate();

Смежные вопросы