我无法在我的图形AndroidPlot中看到使用库Viewpagerindicator的元素

时间:2014-01-17 18:01:23

标签: android android-viewpager viewpagerindicator androidplot

我的问题是,我从几天前回来,我的androidPlot图形运行良好,我在一个简单的布局中图形内部的所有数据,但是,我合并了一个库“Viewpagerindicator”,以更好地进入和退出金钱,那么,它是全部工作,只是现在看不到图形内部的元素,这里是图像Click here

“Ingreso”和“Egreso”是我在我的主要布局中添加的两个布局,是两个活动,我没有触及我的图形“Egreso”或“Ingreso”类中的任何内容,只需添加它们。我不明白为什么我没有看到它。

我认为这是我在我的主要laoyut中的viewpager标签中的内容,因为,我在其他布局中使用这个简单,我看到图形。请帮忙。加上我的代码。

主要布局(acitivity_movimientos.xml)

<com.viewpagerindicator.TitlePageIndicator
    android:id="@+id/indicator"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    style="@style/CustomTitlePageIndicator"/>



<android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/transparent"
    android:paddingBottom="5dp"
    android:paddingLeft="8dp"
    android:paddingRight="8dp"
    android:paddingTop="5dp" />

activity_movimiento_ingresos.xml

<com.androidplot.xy.XYPlot
    android:id="@+id/grafica_ingresos"
    android:layout_width="fill_parent"
    android:layout_height="200dp" 
    android:layout_marginTop="10dp"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    androidPlot.title="Ingresos de Enero"
    androidPlot.domainLabel="Dias"
    androidPlot.rangeLabel="Ingresos"/>

我的班级MovimientosActivity.java

public class MovimientosActivity extends Activity {

private ViewPager viewPager;

private LinearLayout ingresos;
private LinearLayout egresos;

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

    getActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#008AFF")));
    viewPager = (ViewPager) findViewById(R.id.pager);
    viewPager.setAdapter(new MainPageAdapter());

    TitlePageIndicator titleIndicator = (TitlePageIndicator)findViewById(R.id.indicator);

    //TabPageIndicator titleIndicator = (TabPageIndicator)findViewById(R.id.indicator);
    titleIndicator.setViewPager(viewPager);     
    titleIndicator.setOnPageChangeListener(new OnPageChangeListener() {

        @Override
        public void onPageSelected(int position){}

        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels){}

        @Override
        public void onPageScrollStateChanged(int state){}
    });     

}

class MainPageAdapter extends PagerAdapter
{

    @Override
    public CharSequence getPageTitle(int position) 
    {
        String title = null;

        switch (position)
        {
        case 0:
            title = getString(R.string.ingresos);
            break;
        case 1:
            title = getString(R.string.egresos);
            break;
        }
        return title;
    }

    @Override
    public int getCount()
    {
        return 2;
    }

    @Override
    public Object instantiateItem(ViewGroup collection, int position)
    {
        View page = null;
        switch (position)
        {
        case 0:
            if (ingresos == null)
            {
                ingresos = (LinearLayout) LayoutInflater.from(MovimientosActivity.this).inflate(R.layout.activity_movimiento_ingresos, null);
            }
            page = ingresos;
            break;
        case 1:
            if (egresos == null)
            {
                egresos = (LinearLayout) LayoutInflater.from(MovimientosActivity.this).inflate(R.layout.activity_movimiento_egresos, null);
            }
            page = egresos;
            break;
        }

        ((ViewPager) collection).addView(page, 0);

        return page;
    }

    @Override
    public boolean isViewFromObject(View view, Object object)
    {
        return view == object;
    }

    @Override
    public void destroyItem(View collection, int position, Object view)
    {
        ((ViewPager) collection).removeView((View) view);
    }

我的班级MovimientoIngresoActivity.java

public class MovimientoIngresosActivity extends Activity {

private XYPlot plot;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_movimiento_ingresos);

    plot = (XYPlot) findViewById(R.id.grafica_ingresos);

    //CREAMOS DOS ARREGLOS PARA MOSTRAR LOS DATOS, SUSTITUIR POR DATOS REALES LUEGO
    Number[] series1Numeros = {1, 8, 5, 2, 7, 4};
    Number[] series2Numeros = {4, 6, 3, 8, 2, 10};
    Number[] series3Numeros = {3, 5, 7, 4, 6, 8};

    //AÑADIMOS LINEA 1
    XYSeries series1 = new SimpleXYSeries(
            Arrays.asList(series1Numeros), //ARRAY, VALORES VERTICALES, NOMBRE DE LA LINEA
            SimpleXYSeries.ArrayFormat.Y_VALS_ONLY, "Intereses");

    //AÑADIMOS LINEA 2
    XYSeries series2 = new SimpleXYSeries(
            Arrays.asList(series2Numeros), //ARRAY, VALORES VERTICALES, NOMBRE DE LA LINEA
            SimpleXYSeries.ArrayFormat.Y_VALS_ONLY, "Alquileres");

    //AÑADIMOS LINEA 3
    XYSeries series3 = new SimpleXYSeries(
            Arrays.asList(series3Numeros), //ARRAY, VALORES VERTICALES, NOMBRE DE LA LINEA
            SimpleXYSeries.ArrayFormat.Y_VALS_ONLY, "Sansiones");

    //MODIFICAMOS LOS COLORES DE LA PRIMERA SERIE
    LineAndPointFormatter series1Format = new LineAndPointFormatter(
            Color.rgb(0, 200, 0),       //COLOR LINEA
            Color.rgb(0, 100, 0),       //COLOR DEL PUNTO
            null, null);  //RELLENO

    //LO AÑADIMOS AL PANEL
    plot.addSeries(series1, series1Format);

    //MODIFICAMOS LOS COLORES DE LA SEGUNDA SERIE
    LineAndPointFormatter series2Format = new LineAndPointFormatter(
        Color.rgb(0, 0, 200),       //COLOR LINEA
        Color.rgb(0, 0, 100),       //COLOR DEL PUNTO
        null, null);  //RELLENO

    //LO AÑADIMOS AL PANEL
    plot.addSeries(series2, series2Format);

    //MODIFICAMOS LOS COLORES DE LA SEGUNDA SERIE
    LineAndPointFormatter series3Format = new LineAndPointFormatter(
        Color.rgb(200, 0, 0),       //COLOR LINEA
        Color.rgb(100, 0, 0),       //COLOR DEL PUNTO
        null, null);  //RELLENO

    //LO AÑADIMOS AL PANEL
    plot.addSeries(series3, series3Format);

}

}

由于

1 个答案:

答案 0 :(得分:2)

实际上你没有画图,你MovimientoIngresosActivity在这里没用。 你需要做一些像这样的改变。

1 。创建一个绘制图形的方法

View getGraph()
{
    LinearLayout view = (LinearLayout) LayoutInflater.from(MovimientosActivity.this)
            .inflate(R.layout.activity_movimiento_ingresos, null);
XYPlot plot = (XYPlot) view.findViewById(R.id.grafica_ingresos);

//CREAMOS DOS ARREGLOS PARA MOSTRAR LOS DATOS, SUSTITUIR POR DATOS REALES LUEGO
Number[] series1Numeros = {1, 8, 5, 2, 7, 4};
Number[] series2Numeros = {4, 6, 3, 8, 2, 10};
Number[] series3Numeros = {3, 5, 7, 4, 6, 8};

//AÑADIMOS LINEA 1
XYSeries series1 = new SimpleXYSeries(
        Arrays.asList(series1Numeros), //ARRAY, VALORES VERTICALES, NOMBRE DE LA LINEA
        SimpleXYSeries.ArrayFormat.Y_VALS_ONLY, "Intereses");

//AÑADIMOS LINEA 2
XYSeries series2 = new SimpleXYSeries(
        Arrays.asList(series2Numeros), //ARRAY, VALORES VERTICALES, NOMBRE DE LA LINEA
        SimpleXYSeries.ArrayFormat.Y_VALS_ONLY, "Alquileres");

//AÑADIMOS LINEA 3
XYSeries series3 = new SimpleXYSeries(
        Arrays.asList(series3Numeros), //ARRAY, VALORES VERTICALES, NOMBRE DE LA LINEA
        SimpleXYSeries.ArrayFormat.Y_VALS_ONLY, "Sansiones");

//MODIFICAMOS LOS COLORES DE LA PRIMERA SERIE
LineAndPointFormatter series1Format = new LineAndPointFormatter(
        Color.rgb(0, 200, 0),       //COLOR LINEA
        Color.rgb(0, 100, 0),       //COLOR DEL PUNTO
        null);  //RELLENO

//LO AÑADIMOS AL PANEL
plot.addSeries(series1, series1Format);

//MODIFICAMOS LOS COLORES DE LA SEGUNDA SERIE
LineAndPointFormatter series2Format = new LineAndPointFormatter(
    Color.rgb(0, 0, 200),       //COLOR LINEA
    Color.rgb(0, 0, 100),       //COLOR DEL PUNTO
    null);  //RELLENO

//LO AÑADIMOS AL PANEL
plot.addSeries(series2, series2Format);

//MODIFICAMOS LOS COLORES DE LA SEGUNDA SERIE
LineAndPointFormatter series3Format = new LineAndPointFormatter(
    Color.rgb(200, 0, 0),       //COLOR LINEA
    Color.rgb(100, 0, 0),       //COLOR DEL PUNTO
    null);  //RELLENO

//LO AÑADIMOS AL PANEL
plot.addSeries(series3, series3Format);
    return plot;

}

2 。将instantiateItem方法更改为

@Override
    public Object instantiateItem(ViewGroup collection, int position)
    {
        View page = null;
        switch(position)
        {
        case 0:
            page = getGraph();
            break;
        case 1:
            page = getGraph();
            break;
        }
        ((ViewPager) collection).addView(page, 0);
        return page;
    }

U可能需要为不同的图形制作不同的方法。

U也可以使用片段和FragmentPagerAdapter来完成。