Fragment + TabHost + RadioGroup

1. 使用FragMent是因为 4.0.3之后 ,摒弃了TabActivity这种用法,

Demo 效果图:

先上布局XML R.layout.activity_main

[html] view
plain
copy

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <TabHost
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:id="@android:id/tabhost"
  5. android:layout_width="fill_parent"
  6. android:layout_height="fill_parent">
  7. <LinearLayout
  8. android:orientation="vertical"
  9. android:layout_width="fill_parent"
  10. android:layout_height="fill_parent">
  11. <TabWidget
  12. android:id="@android:id/tabs"
  13. android:layout_width="fill_parent"
  14. android:layout_height="wrap_content"
  15. android:layout_weight="0.0"
  16. android:visibility="gone"/>
  17. <include android:id="@+id/header"
  18. layout="@layout/my_header"
  19. android:layout_height="wrap_content"
  20. android:layout_width="fill_parent"/>
  21. <FrameLayout
  22. android:id="@android:id/tabcontent"
  23. android:layout_width="fill_parent"
  24. android:layout_height="0.0dip"
  25. android:layout_weight="1.0">
  26. <fragment
  27. android:name="com.example.coolsmile.fragment.HomeFragment"
  28. android:id="@+id/HomeFragment"
  29. android:layout_width="match_parent"
  30. android:layout_height="match_parent"
  31. />
  32. <fragment
  33. android:name="com.example.coolsmile.fragment.fragment_tab2"
  34. android:id="@+id/fragment_tab2"
  35. android:layout_width="match_parent"
  36. android:layout_height="match_parent"
  37. />
  38. <fragment
  39. android:id="@+id/fragment_tab3"
  40. android:name="com.example.coolsmile.fragment.fragment_tab3"
  41. android:layout_width="match_parent"
  42. android:layout_height="match_parent"
  43. />
  44. <fragment
  45. android:id="@+id/fragment_tab4"
  46. android:name="com.example.coolsmile.fragment.fragment_tab4"
  47. android:layout_width="match_parent"
  48. android:layout_height="match_parent"
  49. />
  50. <fragment
  51. android:id="@+id/fragment_tab5"
  52. android:name="com.example.coolsmile.fragment.fragment_tab5"
  53. android:layout_width="match_parent"
  54. android:layout_height="match_parent"
  55. />
  56. </FrameLayout>
  57. <RadioGroup
  58. android:id="@+id/main_tab"
  59. android:background="@drawable/bottom1"
  60. android:orientation="horizontal"
  61. android:layout_width="fill_parent"
  62. android:layout_height="wrap_content"
  63. android:gravity="center_vertical"
  64. android:layout_gravity="bottom">
  65. <RadioButton
  66. android:id="@+id/main_tab_home"
  67. style="@style/MMTabButton"
  68. android:layout_weight="1.0"
  69. android:drawableTop="@drawable/menu_icon_0_normal"
  70. android:text="@string/main_home"/>
  71. <RadioButton
  72. android:id="@+id/main_tab_info"
  73. style="@style/MMTabButton"
  74. android:layout_weight="1.0"
  75. android:drawableTop="@drawable/menu_icon_1_normal"
  76. android:text="@string/main_my_info" />
  77. <RadioButton
  78. android:id="@+id/main_tab_news"
  79. style="@style/MMTabButton"
  80. android:layout_weight="1.0"
  81. android:drawableTop="@drawable/menu_icon_2_normal"
  82. android:text="@string/main_news" />
  83. <RadioButton
  84. android:id="@+id/main_tab_search"
  85. style="@style/MMTabButton"
  86. android:layout_weight="1.0"
  87. android:drawableTop="@drawable/menu_icon_3_normal"
  88. android:text="@string/main_search"/>
  89. <RadioButton
  90. android:id="@+id/main_tab_settings"
  91. style="@style/MMTabButton"
  92. android:layout_weight="1.0"
  93. android:drawableTop="@drawable/menu_icon_3_normal"
  94. android:focusable="false"
  95. android:text="@string/main_settings" />
  96. </RadioGroup>
  97. <TextView
  98. android:id="@+id/main_tab_new_message"
  99. android:layout_width="wrap_content"
  100. android:layout_height="wrap_content"
  101. android:layout_gravity="center_horizontal|top"
  102. android:layout_marginLeft="15dip"
  103. android:layout_marginTop="-46dip"
  104. android:background="@drawable/tips"
  105. android:gravity="center"
  106. android:textColor="#ffffff"
  107. android:textSize="10sp"
  108. android:visibility="visible" />
  109. </LinearLayout>
  110. </TabHost>

这里有个Fragment标签

android:name="com.example.coolsmile.fragment.HomeFragment"

这里的android:name="具体的Fragment的实现类"

这里我的Acitivty继承了FargmentActivity,onCreate方法里

[java] view
plain
copy

  1. setContentView(R.layout.activity_main);
  2. InitUI();

[java] view
plain
copy

  1. private void InitUI(){
  2. // get Resource R.string
  3. InitUIString();
  4. // set Message Number
  5. TextView main_tab_new_message=(TextView) findViewById(R.id.main_tab_new_message);
  6. main_tab_new_message.setVisibility(View.VISIBLE);
  7. main_tab_new_message.setText("6");
  8. tabHost = (TabHost) findViewById(android.R.id.tabhost);
  9. tabHost.setup();
  10. tabHost.addTab(
  11. tabHost.newTabSpec(main_home).setIndicator(main_home).setContent(R.id.HomeFragment)
  12. );
  13. tabHost.addTab(
  14. tabHost.newTabSpec(main_my_info).setIndicator(main_my_info).setContent(R.id.fragment_tab2)
  15. );
  16. tabHost.addTab(
  17. tabHost.newTabSpec(main_news).setIndicator(main_news).setContent(R.id.fragment_tab3)
  18. );
  19. tabHost.addTab(
  20. tabHost.newTabSpec(main_search).setIndicator(main_search).setContent(R.id.fragment_tab4)
  21. );
  22. tabHost.addTab(
  23. tabHost.newTabSpec(main_settings).setIndicator(main_settings).setContent(R.id.fragment_tab5)
  24. );
  25. tabHost.setCurrentTab(0);
  26. InitClickListener();
  27. }
  28. private void InitClickListener(){
  29. RadioGroup radioGroup=(RadioGroup) this.findViewById(R.id.main_tab);
  30. radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
  31. @Override
  32. public void onCheckedChanged(RadioGroup group, int checkedId) {
  33. // TODO Auto-generated method stub
  34. switch (checkedId) {
  35. case R.id.main_tab_home:
  36. tabHost.setCurrentTabByTag(main_home);
  37. break;
  38. case R.id.main_tab_info:
  39. tabHost.setCurrentTabByTag(main_my_info);
  40. break;
  41. case R.id.main_tab_news:
  42. tabHost.setCurrentTabByTag(main_news);
  43. break;
  44. case R.id.main_tab_search:
  45. tabHost.setCurrentTabByTag(main_search);
  46. break;
  47. case R.id.main_tab_settings:
  48. tabHost.setCurrentTabByTag(main_settings);
  49. break;
  50. default:
  51. tabHost.setCurrentTabByTag(main_home);
  52. }
  53. }
  54. });
  55. }
  56. @Override
  57. public void onClick(View v) {
  58. }
  59. public MainHeader getHeader(){
  60. return this.header;
  61. }
  62. private void InitUIString(){
  63. main_home = getResources().getString(R.string.main_home);
  64. main_my_info = getResources().getString(R.string.main_my_info);
  65. main_news = getResources().getString(R.string.main_news);
  66. main_search = getResources().getString(R.string.main_search);
  67. main_settings = getResources().getString(R.string.main_settings);
  68. }

这里实例了一个效果图的HomeFragMent

[java] view
plain
copy

  1. public class HomeFragment extends Fragment{
  2. View view;
  3. String[] presidents = {
  4. "Dwight D. Eisenhower",
  5. "John F. Kennedy",
  6. "Lyndon B. Johnson",
  7. "Richard Nixon",
  8. "Gerald Ford",
  9. "Jimmy Carter",
  10. "Ronald Reagan",
  11. "George H. W. Bush",
  12. "Bill Clinton",
  13. "George W. Bush",
  14. "Barack Obama"
  15. };
  16. @Override
  17. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  18. Bundle savedInstanceState) {
  19. // TODO Auto-generated method stub
  20. view = inflater.inflate(R.layout.fragment_tab1,container,false);
  21. Init();
  22. return view ;
  23. }
  24. protected void Init(){
  25. ListView list = (ListView)view.findViewById(android.R.id.list);
  26. list.setAdapter(new ArrayAdapter<String>(getActivity(),
  27. android.R.layout.simple_list_item_1, presidents));
  28. list.setOnItemClickListener(listener);
  29. }
  30. private OnItemClickListener listener = new OnItemClickListener() {
  31. @Override
  32. public void onItemClick(AdapterView<?> parent, View view, int position,
  33. long id) {
  34. // TODO Auto-generated method stub
  35. Intent intent = new Intent(getActivity(), ListContainActivity.class);
  36. intent.putExtra("PRESIDENTS_CONTENT",presidents[position]);
  37. getActivity().startActivity(intent);
  38. }
  39. };
  40. }

点击: 下载DEMO

时间: 2024-09-30 11:03:22

Fragment + TabHost + RadioGroup的相关文章

Fragment+TabHost模仿新浪新闻布局界面

Fragment+TabHost模仿新浪新闻布局界面 支持平台:Android   运行环境:Eclipse   开发语言:Java 下载地址:http://sina.lt/yZe 源码简介 采用FragmentTabHost的综合布局实现的新浪新闻的效果. 源码运行截图  

底部菜单栏(二) TabHost &amp; RadioGroup 实现

需求:使用TabHost & RadioGroup实现底部菜单栏: 效果图: 实现分析: 1.目录结构: 代码实现: 1. activity_main.xml <?xml version="1.0" encoding="utf-8"?> <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android

TabHost+RadioGroup搭建基础布局

xml的形势如下: <tabhost> <linearlayout vertival> <framlayout weight=1/> <tabwidget gone/> <framlayout> <radiogroup> <radiobutton/> <radiobutton/> <radiobutton/> <radiobutton/> </radiogroup> <

Android应用主界面底部菜单实现

介绍 现在绝大多数主流的应用主界面,都会包含一个底部菜单,就拿腾讯的QQ与微信来说,看起来是这样的  <---我是底部菜单 原理 在很久以前,可以通过TabActivity实现相关功能,自从Fragment出来后,就被抛弃了. 原理也很简单 1.底部菜单通过自定义RadioGroup实现,通过setOnCheckedChangeListener监听切换内容. 2.内容切换,可以使用ViewPager(可以实现直接滑动切换),TabHost,FragmentManager来实现.. PS:类似的,

Android -- TabHost、Fragment、状态保存、通信

工程结构                                                                                       TabAFm到TabEFm都是Fragment,并且每个Fragment对应一个布局文件. TabAFm.java                                                                             package com.yydcdut.tabho

Fragment(碎片)(1)

莫愁前路无知己,天下谁人不识君. --高适<别董大二首> Fragment 碎片是什么 Fragment的简单使用 导入Fragment包的选择 supportv4appFragment androidappFragment Fragment的动态使用1 Fragment的动态使用2 在Fragment中模拟返回栈 FragmentTransaction的方法 Fragment进阶使用 源码 参考 Fragment 碎片(Fragment)是一种可以嵌入在活动当中的UI片段,它能让程序更加合理

Android碎片Fragment总结

一.Fragment的相关概念 (一)Fragment的基础知识 Fragment是Android3.0新增的概念,中文意思是碎片,它与Activity十分相似,用来在一个 Activity中描述一些行为或一部分用户界面.使用多个Fragment可以在一个单独的Activity中建 立多个UI面板,也可以在多个Activity中使用Fragment. Fragment拥有自己的生命 周期和接收.处理用户的事件,这样就不必在Activity写一堆控件的事件处理的代码了.更为 重要的是,你可以动态的

优化多个Fragment切换出现的问题FragmentTabAdapter

我们在开发过程中经常会用到多个Fragment之间进行切换,刚开始是有一些开发者可能会用到这种单例方法: if (mFragment != null) { ft.hide(mFragment); } 这种方法避免了多次多fragment进行实例化,实例化一次多次使用的优化方法,但是用这个话,经过我们测试的工作者的暴力测试就会出现问题,比如:多个fragment乱串的问题,因为这个用做的话fragment的生命周期可能会乱掉,所以这样的写法并不是做好的我最近研究了下网上的一些大神发现有一个更好的实

基于Android的计步器(Pedometer)的讲解(一)——Fragment页面跳转

首先需要做的是实现几个页面的跳转,既类似微信的点击按钮,切换页面. 话不多说,这是一个简单的页面切换的Demo,先贴几张实现的效果: 图片的底部是5个RadioButton,用来进行页面之间的切换.剩下的部分是一个LinearLayout的布局,用来镶嵌5个Fragment(碎片)的页面. 一共用到5个类:MainActivity.MyAdapter.FragmentHistory.FragmentAnalysis.FragmentPedometer.FragmentPK.FragmentSet