android - 使用 Viewpagerindicator 库后,我看不到图形 AndroidPlot 中的元素

标签 android android-viewpager viewpagerindicator androidplot

我的问题是,从几天前开始,我的 androidPlot 图形运行良好,我在一个简单的布局中悲伤图形内的所有数据,但是,我合并了一个库“Viewpagerindicator”,以便更好地处理条目和钱退出,然后,一切正常,只是现在看不到图形内部的元素,这里是图像 Click here

“Ingreso”和“Egreso”是我在主要布局中添加的两个布局,是两个 Activity ,我没有触及图形“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);

}

}

谢谢

最佳答案

实际上你并没有绘制图表,你的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;
    }

你可能需要为不同的图表制定不同的方法。

你也可以通过使用 fragment 和FragmentPagerAdapter来做到这一点。

关于android - 使用 Viewpagerindicator 库后,我看不到图形 AndroidPlot 中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21192756/

相关文章:

android - 使用 ViewPagerIndicator 为选定选项卡的文本赋予不同的颜色

android - 带有从图库中选择的图像的 Viewpager 指示器

带有滑动选项卡的 Android 操作栏

Android 应用程序背景分辨率

设置当前项目/页面时,Android ViewPager 抛出 IndexOutOfBounds 异常

android - 如何使用 viewpager 显示和隐藏 fragment 的操作栏

android - fragment 抽屉导航 View 页面指示器之间的变化

android - 在 Android 中使用可选切片绘制饼图的最佳方法是什么?

java - Android Studio 库不工作

android - 如何更改 Material viewpager 选项卡指示器文本颜色?