Android的ViewPager和片段设计 [英] Android ViewPager and fragments design

查看:111
本文介绍了Android的ViewPager和片段设计的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 ViewPager 3个片段进去。
一切工作正常其中两个。
问题是与第三寻呼机这一个是 TabHost ,其中有每个标签一个片段。
但我读过它不可能把一个 Tabhost A片段中。嵌套的片段是被禁止的。

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 each tab. But I've read that it's is not possible to put a Tabhost inside a Fragment. Nested fragments are forbidden.

任何人有什么我能为解决我的问题做任何想法?
任何替代方案?

Anyone has any idea of what can I do for resolving my problem? Any alternatives?

推荐答案

这就是我解决我的问题做了。

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

我已经做了一个定制Tabhost。我说自定义,因为它不是一个Tabhost,它似乎只。
在我的ViewPager内fragements之一,我在片段的顶部已经4图像。和该片段的其余一个的FrameLayout。
我每次抚摸上的图像,我代替这是在框架各自fragemnt片段。

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.

我添加一些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>

在FragmentActivity:

In the FragmentActivity:

public void boton1Click(View v){
    mFragmentInViewPager.changeFragment(BUTTON1);
}

public void boton2Click(View v){
    mFragmentInViewPager.changeFragment(BUTTON2);
}

public void boton3Click(View v){
    mFragmentInViewPager.changeFragment(BUTTON3);
}
public void boton4Click(View v){
    mFragmentInViewPager.changeFragment(BUTTON4);
}

和最后在FragmentInViewPager(其中包含其他4个片段的一个)

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

public void changeFragment(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.

这篇关于Android的ViewPager和片段设计的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆