做网站挣钱来个好心人指点一下呗/百度搜索简洁版网址
郭神代码在此http://blog.csdn.net/guolin_blog/article/details/13171191,
我做个简单总结
效果图如下
上述界面主要分为上下2个部分,上部分是个FrameLayout,用来放主要内容。下部分是个LinearLayout,放4个标签。下面标签点击会导致上面的内容改变。
xml代码如下
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><FrameLayoutandroid:id="@+id/content"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1" ></FrameLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="60dp"android:background="@drawable/tab_bg" >......</LinearLayout></LinearLayout>
实际上有4个Fragment,每个Fragment的代码都是类似的,这里举一个例子,主要是重写了onCreateView函数,里面加载布局。
public class MessageFragment extends Fragment {public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View messageLayout = inflater.inflate(R.layout.message_layout, container, false);return messageLayout;}}
点击tab页响应的核心代码如下
FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction transaction = fragmentManager.beginTransaction(); // 先隐藏掉所有的Fragment,以防止有多个Fragment显示在界面上的情况 hideFragments(transaction); switch (index) { case 0: ...case 1: ...case 2: // 当点击了动态tab时,改变控件的图片和文字颜色 newsImage.setImageResource(R.drawable.news_selected); newsText.setTextColor(Color.WHITE); if (newsFragment == null) { // 如果NewsFragment为空,则创建一个并添加到界面上 newsFragment = new NewsFragment(); transaction.add(R.id.content, newsFragment); } else { // 如果NewsFragment不为空,则直接将它显示出来 transaction.show(newsFragment); } break; case 3: default: ...} transaction.commit();
首先getFragmentManager获取到manager,然后开启事务,在事务中隐藏所有的fragment,然后显示某一个,这样就达到切换页面的目的。实际上最后的时候R.id.content上有4个Fragment,只是3个隐藏,一个显示