文档章节

FragmentTabHost的简单使用tab例子

初来小修
 初来小修
发布于 2016/02/15 21:23
字数 417
阅读 127
收藏 0


效果图示例:

 

 

 

 

 


1、res/layout下2个布局activity_main.xml和textview.xml


textview.xml布局


代码


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center" >

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

 

 

==================

 

2、activity_main.xml布局


代码

 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="${relativePackage}.${activityClass}" >

    <!-- FragmentTabHost相当于一个容器 -->
    <android.support.v4.app.FragmentTabHost
        android:id="@+id/fragmentTabHost"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <LinearLayout
            android:id="@+id/layout_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="horizontal" >
        </LinearLayout>
    </android.support.v4.app.FragmentTabHost>

</RelativeLayout>

 

 

========================

 


3、源文件有2个MainActivity.java和PagerFragment.java

 


PagerFragment.java类

 

代码

 


public class PagerFragment extends Fragment {

 private int tabIndex;
 @Override
 public void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  tabIndex = getArguments().getInt("tabIndex");
 }
 @Override
 public View onCreateView(LayoutInflater inflater,
   @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
  View view = inflater.inflate(R.layout.textview,container,false);
  TextView text = (TextView) view.findViewById(R.id.textView);
  switch(tabIndex){
  case 0:
   text.setText("这是记录页面");
   break;
  case 1:
   text.setText("这是联系人页面");
   break;
  case 2:
   text.setText("这是收藏夹页面");
   break;
  case 3:
   text.setText("这是群组页面");
   break;
  }
  return view;
 }
}

 

 

==================

 


MainActivity类


代码

 

 

public class MainActivity extends FragmentActivity {

 private FragmentTabHost tabHost;
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  this.tabHost = (FragmentTabHost) this.findViewById(R.id.fragmentTabHost);
  
  FragmentManager fragmentManager = getSupportFragmentManager();
  //将FragmentTabHost和布局联系起来
  tabHost.setup(this, fragmentManager, R.id.layout_container);
  
  //创建tab
  TabSpec spec1 = tabHost.newTabSpec("a");//参数:标识
  spec1.setIndicator("记录");//设置标题或 图标
  Bundle bundle1 = new Bundle();
  bundle1.putInt("tabIndex", 0);
  
  TabSpec spec2 = tabHost.newTabSpec("b");//参数:标识
  spec2.setIndicator("联系人");//设置标题或 图标
  Bundle bundle2 = new Bundle();
  bundle2.putInt("tabIndex", 1);
  
  TabSpec spec3 = tabHost.newTabSpec("c");//参数:标识
  spec3.setIndicator("收藏夹");//设置标题或 图标
  Bundle bundle3 = new Bundle();
  bundle3.putInt("tabIndex", 2);
  
  TabSpec spec4 = tabHost.newTabSpec("d");//参数:标识
  spec4.setIndicator("群组");//设置标题或 图标
  Bundle bundle4 = new Bundle();
  bundle4.putInt("tabIndex", 3);
  //把TabSpec Fragment Bundle 关联起来
  tabHost.addTab(spec1, PagerFragment.class, bundle1);
  tabHost.addTab(spec2, PagerFragment.class, bundle2);
  tabHost.addTab(spec3, PagerFragment.class, bundle3);
  tabHost.addTab(spec4, PagerFragment.class, bundle4);
 }
}

 

© 著作权归作者所有

初来小修
粉丝 4
博文 117
码字总数 80711
作品 0
广州
私信 提问
TabLayout 与 FragmentTabHost

TabLayout 与 FragmentTabHost Android提供实现Tab样式的控件大致有TabActivity、FragmentTabHost、TabLayout。而TabActivity已经过时,这里就不在多说,主要提 一下Tablayout与FragmentTab...

冰色
2016/01/08
568
0
实现底部导航栏及切换tab重新加载的问题解决

许多的App都使用底部导航栏来实现导航功能,我们可以使用RadioGroup+RadioButton的形式或者直接Button数组的方式实现,而谷歌官方提供了FragmentTabHost来方便快捷实现底部导航栏。 android....

一剑围城
2017/02/08
0
0
Android Fragment FragmentTabHost问题

今天需要做一个功能,实现tab切换功能,但是又不能向viewpager一样可以滑动,只能通过顶部的tab标签滑动,就是类似ActionBar的tab一样的切换。 然后我就去找例子,在ApiDemos中有FragmentTab...

simpower
2014/09/21
0
1
Fragment 结合FragmentTabHost使用心得

FragmentTabHost我也不知道是什么,就是可用用来当新浪微博底部那个状态栏的工具。现在说下怎么使用 首先activity要继承FragmentActivity 例如 public class A extends FragmentActivity{ /...

sw3458856
2014/05/06
0
0
Navigation Architecture Component 学习笔记

Navigation Architecture Component 的一些概念 导航原则 任何应用内导航的目标应该是为用户提供一致且可预测的体验,为了实现这一目标,导航架构组件可帮助您构建符合以下几个导航原则的应用...

newtrek
2018/08/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Ajax

定义 Ajax是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术,用于创建动态网页 Ajax=Asynchronous Javascript And XML(异步的JavaScript和XML) 原理 XMLHttpRequest对象(异...

星闪海洋
昨天
2
0
Jenkins 中文本地化的重大进展

本文首发于:Jenkins 中文社区 我从2017年开始,参与 Jenkins 社区贡献。作为一名新成员,翻译可能是帮助社区项目最简单的方法。 本地化的优化通常是较小的改动,你无需了解项目完整的上下文...

Jenkins中文社区
昨天
3
0
Spring中如何使用设计模式

关于设计模式,如果使用得当,将会使我们的代码更加简洁,并且更具扩展性。本文主要讲解Spring中如何使用策略模式,工厂方法模式以及Builder模式。 1. 策略模式 关于策略模式的使用方式,在S...

爱宝贝丶
昨天
3
0
前后端分离-前端搭建(vue)

前端使用vue,那么怎么搭建vue呢 先安装nodejs以及npm 现在基本的nodejs都包含有npm,下载安装后, 可以在cmd命令里输入 node -v 和npm -v 分别查看安装的版本 两个都显示了版本就是安装ok ...

咸鱼-李y
昨天
3
0
聊聊elasticsearch的DeadlockAnalyzer

序 本文主要研究一下elasticsearch的DeadlockAnalyzer DeadlockAnalyzer elasticsearch-7.0.1/server/src/main/java/org/elasticsearch/monitor/jvm/DeadlockAnalyzer.java public class Dea......

go4it
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部