Adicionar layout a uma página de ScreenSlide Utilizando XML

0 respostas
T

Olá.

No meu app, tenho três layouts, cada uma correspondendo a uma página.
Utilizo o ScreenSlide para a passagem de página. Antes, para cada página,
havia uma imagem, fazia:

int mPaginas [] = { R.drawable.pag1, R.drawable.pag2. R.drawable.pag3 };

E chamando estas imagens, dentro do meu código, funcionava perfeitamente.
Mas me limita à outras coisas que quero que faça. Por isso, quero recorrer
aos XMLs, ao invés de chamar as imagens. Como faço isso?

Seguem os códigos:

import android.app.Activity;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.ViewGroup;
import android.widget.LinearLayout;

/**
 * Created by Tsuy on 12/10/2015.
 */

public class RelatorioActivity extends Activity
{
    private int mPaginas[] = { R.layout.fragment_1_pagina, R.layout.fragment_2_pagina, R.layout.fragment_3_pagina };

    @Override
    public void onCreate(Bundle savedInstance)
    {
        super.onCreate(savedInstance);
        setContentView(R.layout.activity_relatorio);

        ViewPager vp = new ViewPager(this);
        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        vp.setLayoutParams(lp);

        vp.setAdapter(new AdapterPaginas(this, mPaginas));

        vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener()
        {
            @Override
            public void onPageSelected(int arg0)
            {
                Log.i("Script", "onPageSelected()");
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2)
            {
                Log.i("Script", "onPageScrolled()");
            }

            @Override
            public void onPageScrollStateChanged(int arg0)
            {
                Log.i("Script", "onPageScrollStateChanged()");
            }
        });

        LinearLayout ll = (LinearLayout) findViewById(R.id.LinearLayout1);
        ll.addView(vp);
        }
    }
}
<!-- activity_relatorio.xml -->

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#FFFFFF">

</LinearLayout>
/**
 * Created by Tsuy on 16/10/2015.
 */

import android.annotation.TargetApi;
import android.content.Context;
import android.os.Build;
import android.support.v4.view.PagerAdapter;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

public class AdapterPaginas extends PagerAdapter
{
    private Context context;
    private int imgs [];

    public AdapterImg(Context context, int imgs [])
    {
        this.context = context;
        this.imgs = imgs;
    }

    @Override
    public int getCount()
    {
        return imgs.length;
    }

    @Override
    public boolean isViewFromObject(View view, Object obj)
    {
        return view == ((TextView) obj).getParent();
    }

    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    @Override
    public Object instantiateItem(ViewGroup container, int position)
    {
        LinearLayout ll = new LinearLayout(context);
        ll.setOrientation(LinearLayout.VERTICAL);
        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
        ll.setLayoutParams(lp);
        container.addView(ll);

        ImageView iv = new ImageView(context);
        iv.setImageResource(imgs[position]);
        ll.addView(iv);

        TextView tv = new TextView(context);
        ll.addView(tv);

        return(tv);
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object view)
    {
        container.removeView((View)((TextView)view).getParent());
    }
}
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

/**
 * Created by Tsuy on 20/10/2015.
 */
 
public class Pagina1Fragment extends Fragment
{
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        View layoutPag1 = inflater.inflate(R.layout.fragment_1_pagina, container, false);

        return layoutPag1;
    }
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#00CCFF">

    <ImageView
        android:id="@+id/pagina1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:background="@drawable/ic_easter_egg_pag_1"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="1"
        android:textSize="60sp"
        android:textStyle="bold"
        android:textColor="#FFFFFF"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="30sp"/>

</RelativeLayout>

Imagino que eu precise criar uma variável de referência à um objeto
Pagina1Fragment no onCreate da RelatorioActivity;

algo como:

Pagina1Fragment p1F = new Pagina1Fragment();

// ... outros códigos

p1F.onCreateView( "O que colocar aqui" );

Na linha:

p1F.onCreateView( * );

* O que eu devo colocar, caso seja esta a resolução?

Criado 20 de outubro de 2015
Respostas 0
Participantes 1