2012-03-14 13 views
5

Con SherlockActionBar he creado una interfaz agradable. En el modo horizontal, se ve tanto listfragment como "detailsfragment".Viewpageindicator dentro del fragmento

Ahora me gustaría añadir un viewpageindicator un (https://github.com/JakeWharton/Android-ViewPagerIndicator) dentro de la detailsframe, por lo que se vería así:

--------------------------| 
|_1___|TAB1 | TAB2 | ETC | 
|_2___|-------------------| 
|_3___|Example: content | 
|_4___| TAB1 of listitem 1| 
|_5___|___________________| 

Espero que esto está claro. Así que, básicamente, un FragmentManager/TabPageIndicator dentro de un fragmento.

¿Esto es posible? No puedo averiguarlo .. :(

Gracias!

+0

¿Tienes un ListViewFragment a la izquierda? Entonces, cada elemento ListView cargará un Fragmento RHS diferente que contiene: TabPageIndicator y ViewPager? –

Respuesta

6

No debe poner Fragment dentro de Fragment. Sin embargo, puede poner un ViewPager dentro de un fragmento y obtener el resultado que está buscando.

Hace un tiempo estaba enfrentando el mismo problema para una de mis aplicaciones (solo quería que el ViewPager tuviera un contenido de ListView s). Este fue el resultado final (ver las líneas; rojo contiene Fragment, azul ViewPagerIndicator, verde ViewPager):

Example ViewPager inside a Fragment

I logrado esto con los pasos siguientes. Puño, por el detalle de fragmentos, que crea el siguiente archivo XML:

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

    <com.viewpagerindicator.TabPageIndicator 
     android:id="@+id/viewpagerIndicator" 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" /> 
    <android.support.v4.view.ViewPager 
     android:id="@+id/viewpager" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" /> 

</LinearLayout> 

A continuación, he creado un PagerAdapter personalizada para poblar el ViewPager y la TabPageIndicator:

public class MainPagerAdapter extends PagerAdapter implements TitleProvider { 

    // constructor 
    ...   

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
     // remove the object (we don't want to keep it in memory as it will get recreated and cached when needed) 

     ViewPager viewPager = (ViewPager) container; 
     View view = (View) object; 
     viewPager.removeView(view); 
    } 

    @Override 
    public Object instantiateItem(View pager, final int position) { 
     // inflate your 'content'-views here (in my case I added a listview here) 
     // similar to a listadapter's `getView()`-method 

     View wrapper = ... // inflate your layout 
     ... // fill your data to the appropriate views 

     ((ViewPager) pager).addView(wrapper); 
    } 

    public String getTitle(int position) { 
     ... // return the title of the tab 
    } 
} 

A continuación, en mi fragmento , Configuré lo siguiente:

public class MainFragment extends Fragment { 

    private MainPagerAdapter pagerAdapter; 
    private TabPageIndicator mIndicator; 
    private ViewPager viewPager; 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 

     View detailsFrame = context.findViewById(R.id.details_fragment); 
     // setup your adapter: pass data, etc. 
     this.pagerAdapter = new MainPagerAdapter(...); 
     this.viewPager = (ViewPager) context.findViewById(R.id.viewpager); 
     viewPager.setAdapter(pagerAdapter); 

     this.mIndicator = (TabPageIndicator) context.findViewById(R.id.viewpagerIndicator); 
     this.mIndicator.setViewPager(viewPager); 
    } 
} 
+1

¡Excelente respuesta! –

+0

Hola, por favor proporcione el código completo ... no puedo entender en ningún momento, gracias de antemano – VENKI

+0

@Reinier, ¿qué es esto Ver detallesFrame = context.findViewById (R.id.details_fragment); que representa ? ¿En qué diseño se pone i.d? –

Cuestiones relacionadas