Skip to content Skip to sidebar Skip to footer

Android Viewpager And Fragments Design

I have a ViewPager with 3 fragments into it. Everything works fine with two of them. The problem is with the third pager This one is a TabHost, in which there is one fragment in e

Solution 1:

You can refer the code as mentioned in this problem it will work as per your design.Plese see

Solution 2:

This is what i've done for resolving my problem.

I've done one "custom" Tabhost". I say "custom" because it is not a Tabhost, it seems to only. In one of my fragements inside the ViewPager, i've 4 images on top of the fragment. And the rest of the fragment is one FrameLayout. Each time i touch on the images, i replace the fragment which is in the frame for the respective fragemnt.

I add some code:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent">
<LinearLayout 
android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal">
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent">
<TableRow >
<LinearLayout android:id="@+id/button1"android:orientation="vertical"android:layout_width="0dip"android:layout_height="wrap_content"android:layout_weight="1"android:onClick="button1Click"
>
<ImageView android:id="@+id/iv1"android:layout_width="match_parent"android:layout_height="wrap_content"android:src="@drawable/ic1"/>
<TextView android:id="@+id/tv1"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:text="@string/text1"/>
</LinearLayout>
<LinearLayout android:id="@+id/button2"android:orientation="vertical"android:layout_width="0dip"android:layout_height="wrap_content"android:layout_weight="1"android:onClick="button2Click"
>
<ImageView android:id="@+id/iv2"android:layout_width="match_parent"android:layout_height="wrap_content"android:src="@drawable/ic2"/>
<TextView android:id="@+id/tv2"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:text="@string/text2"/>
</LinearLayout>
<LinearLayout android:id="@+id/button3"android:orientation="vertical"android:layout_width="0dip"android:layout_height="wrap_content"android:layout_weight="1"android:onClick="button3Click"
>
<ImageView android:id="@+id/iv3"android:layout_width="match_parent"android:layout_height="wrap_content"android:src="@drawable/ic3"/>
<TextView android:id="@+id/tv3"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:text="@string/text3"/>
</LinearLayout>
<LinearLayout android:id="@+id/button4"android:orientation="vertical"android:layout_width="0dip"android:layout_height="wrap_content"android:layout_weight="1"android:onClick="button4Click"
>
<ImageView android:id="@+id/iv4"android:layout_width="match_parent"android:layout_height="wrap_content"android:src="@drawable/ic4"/>
<TextView android:id="@+id/tv4"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:text="@string/text4"/>
</LinearLayout>

</TableRow>
</TableLayout>
</LinearLayout>


<FrameLayout android:id="@+id/layout_actual"android:layout_width="match_parent"android:layout_height="match_parent">

</FrameLayout>

</LinearLayout>

In the FragmentActivity:

publicvoidboton1Click(View v){
    mFragmentInViewPager.changeFragment(BUTTON1);
}

publicvoidboton2Click(View v){
    mFragmentInViewPager.changeFragment(BUTTON2);
}

publicvoidboton3Click(View v){
    mFragmentInViewPager.changeFragment(BUTTON3);
}
publicvoidboton4Click(View v){
    mFragmentInViewPager.changeFragment(BUTTON4);
}

And finally in the FragmentInViewPager (the one which contains the other 4 fragments)

publicvoidchangeFragment(int fragmentId){
if(mCurrentFragmentId != fragmentId) {

switch(fragmentId) {
case BUTTON1:

    mFTransaction = mFManager.beginTransaction();
    mFTransaction.replace(R.id.layout_actual, mFragment1);
    mFTransaction.commit();
    mIv1.setImageResource(R.drawable.ic1_sel);
    mIv2.setImageResource(R.drawable.ic2);
    mIv3.setImageResource(R.drawable.ic3);
    mIv4.setImageResource(R.drawable.ic4);
    break;

case BUTTON2:
    mFTransaction = mFManager.beginTransaction();
    mFTransaction.replace(R.id.layout_actual, mFragment2);
    mFTransaction.commit();
    mIv1.setImageResource(R.drawable.ic1);
    mIv2.setImageResource(R.drawable.ic2_sel);
    mIv3.setImageResource(R.drawable.ic3);
    mIv4.setImageResource(R.drawable.ic4);
    break;

case BUTTON3:
    mFTransaction = mFManager.beginTransaction();
    mFTransaction.replace(R.id.layout_actual, mFragment3);
    mFTransaction.commit();
    mIv1.setImageResource(R.drawable.ic1);
    mIv2.setImageResource(R.drawable.ic2);
    mIv3.setImageResource(R.drawable.ic3_sel);
    mIv4.setImageResource(R.drawable.ic4);
    break;

case BUTTON4:
    mFTransaction = mFManager.beginTransaction();
    mFTransaction.replace(R.id.layout_actual, mFragment4);
    mFTransaction.commit();
    mIv1.setImageResource(R.drawable.ic1);
    mIv2.setImageResource(R.drawable.ic2);
    mIv3.setImageResource(R.drawable.ic3);
    mIv4.setImageResource(R.drawable.ic4_sel);
    break;

}

mCurrentFragmentId = fragmentId;
}

}

I hope of have explained myself well. If anyone needs more info, just tell me.

Post a Comment for "Android Viewpager And Fragments Design"