android - 多个 aChartEngine 图表不滚动

标签 android achartengine

我一直在尝试在一项 Activity 中显示多个图表。目前,第一个图表显示,但第二个图表不显示(或者可能只是无法滚动到)。如果我从 ScrollView 中删除 android:fillViewport="true"则不会显示任何内容。我修改了演示 aChartEngine 代码以返回 View 而不是 Intent 。我不知道错误是在 XML、我的自定义图表类还是我的 Activity 中。我真的很感谢任何帮助。谢谢!

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

<ScrollView 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true">

    <LinearLayout 
    android:id="@+id/linearParent"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:orientation="vertical">

        <LinearLayout
        android:id="@+id/chartOne"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"/>
        <LinearLayout
        android:id="@+id/chartTwo"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"/>

    </LinearLayout>
</ScrollView>

Activity :

    //setup Views
    myWindow = (LinearLayout)findViewById(R.id.paidLayoutLinearParent);
    row1 = (LinearLayout) findViewById(R.id.paidLayoutChartOne);
    row2 = (LinearLayout) findViewById(R.id.paidLayoutChartTwo);

    //Pie Charts
    pie = new PieChartView(this,dens);
    pieTotalCases = pie.getPieChart("Cases", gameStatsDb.getNumCasesPassed(), gameStatsDb.getNumCasesFailed());
    pieTotalCombos = pie.getPieChart("Combos", gameStatsDb.getNumCombosPassed(), gameStatsDb.getNumCombosFailed());

    //add charts to layout
    row1.addView(pieTotalCases,new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
    row2.addView(pieTotalCombos,new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));

自定义饼图 View

public class PieChartView{
/** Colors to be used for the pie slices. */
  private static int[] COLORS = new int[] { Color.GREEN, Color.RED,Color.BLACK,Color.LTGRAY };
  private CategorySeries mSeries;
  private DefaultRenderer mRenderer;
  private Context myContext;
  float screenDens;

  public PieChartView(Context ctx,float screenDensity){
    myContext=ctx;
    screenDens=screenDensity;
  }

  public GraphicalView getPieChart(String title,int numPassed,int numFailed){
      mSeries = new CategorySeries("");
      mRenderer = new DefaultRenderer();
      stylizeChart();

      GraphicalView mChartView = ChartFactory.getPieChartView(myContext, mSeries, mRenderer);
      mRenderer.setChartTitle(title);
      if(numPassed==0 & numFailed==0){
          mSeries.add("None ",1);
          SimpleSeriesRenderer renderer = new SimpleSeriesRenderer();
          renderer.setColor(COLORS[3]);
          mRenderer.addSeriesRenderer(renderer);
          mRenderer.setDisplayValues(false);
          mRenderer.setStartAngle(90);
      }else{
          mSeries.add("Passed ",numPassed);
          SimpleSeriesRenderer renderer = new SimpleSeriesRenderer();
          renderer.setColor(COLORS[0]);
          mRenderer.addSeriesRenderer(renderer);

          mSeries.add("Failed ", numFailed);
          SimpleSeriesRenderer renderer2 = new SimpleSeriesRenderer();
          renderer2.setColor(COLORS[1]);
          mRenderer.addSeriesRenderer(renderer2);
      }
          return mChartView;
  }

  private void stylizeChart(){
    //stylize chart
        mRenderer.setZoomButtonsVisible(false);
        mRenderer.setStartAngle(180);
        mRenderer.setDisplayValues(true);
        mRenderer.setClickEnabled(false);

        mRenderer.setChartTitleTextSize(22*screenDens);
        mRenderer.setLabelsTextSize(17*screenDens);
        mRenderer.setLabelsColor(COLORS[2]);
        mRenderer.setShowLegend(false);

        mRenderer.setPanEnabled(false);
        mRenderer.setZoomEnabled(false);
        mRenderer.setZoomRate(6.0f);
        mRenderer.setInScroll(true);
  }

}

最佳答案

尝试这个 xml(给图形容器一些高度)

<LinearLayout
    android:id="@+id/linearParent"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/graphHolder"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:background="#a11111"
        android:orientation="vertical" />

    <LinearLayout
        android:id="@+id/graphHolder2"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:background="#ea1111"
        android:orientation="vertical" />
</LinearLayout>

关于android - 多个 aChartEngine 图表不滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24725102/

相关文章:

android - 在广播接收器中启动 Activity 以获得结果?

android - 将 achartengine 的 donutchartview 添加到线性布局时出现 IndexOutOfBoundsException

android - 如何使图表适合android上的布局

java - 在Android中创建具有NaN类型值的数组

java - achartengine : how to repaint/redraw chart

android - rxjava : be notified when multiple observables have completed

android - SharedPreferences getFloat 返回 ClassCastException 并强制关闭

android - 如何在android中调用搜索框?

Android - 如何使用 java 文件中的计数器来定位资源/图像名称?

android - 图表引擎线图问题