1. 布局文件的设置,如下
  2.  
  3. <?xml version="1.0" encoding="utf-8"?>
  4. <TabHost xmlns:android="http://schemas.android.com/apk/res/android"
  5. android:id="@+id/tabhosts"
  6. android:layout_width="match_parent"
  7. android:layout_height="match_parent"
  8. android:layout_weight="1"
  9. android:background="#fff" >
  10.  
  11. <LinearLayout
  12. android:layout_width="fill_parent"
  13. android:layout_height="match_parent"
  14. android:orientation="vertical" >
  15.  
  16. <FrameLayout
  17. android:id="@android:id/tabcontent"
  18. android:layout_width="match_parent"
  19. android:layout_weight="1.0"
  20. android:layout_height="0.0dp" />
  21.  
  22. <TabWidget
  23. android:visibility="gone"
  24. android:id="@android:id/tabs"
  25. android:layout_width="match_parent"
  26. android:layout_height="wrap_content"
  27. android:layout_gravity="bottom"
  28. android:orientation="horizontal"/>
  29.  
  30. <RadioGroup
  31. android:layout_gravity="bottom"
  32. android:gravity="center"
  33. android:id="@+id/main_rdg"
  34. android:background="@drawable/main_radio_bg"
  35. android:layout_width="match_parent"
  36. android:layout_height="wrap_content"
  37. android:orientation="horizontal" >
  38.  
  39. <RadioButton
  40. style="@style/bottom_radio_style"
  41. android:id="@+id/rd_index"
  42. android:layout_width="0dp"
  43. android:layout_height="match_parent"
  44. android:text="@string/index"
  45. android:gravity="center_horizontal"
  46. android:drawableTop="@drawable/icon_tab_homepage_checked"
  47. android:layout_weight="1"
  48. />
  49.  
  50. <RadioButton
  51. style="@style/bottom_radio_style"
  52. android:id="@+id/rd_near"
  53. android:layout_width="0dp"
  54. android:layout_height="match_parent"
  55. android:layout_weight="1"
  56. android:text="@string/near"
  57. android:drawableTop="@drawable/icon_tab_nearby_checked" />
  58.  
  59. <RadioButton
  60. style="@style/bottom_radio_style"
  61. android:id="@+id/rd_own"
  62. android:layout_width="0dp"
  63. android:layout_height="match_parent"
  64. android:layout_weight="1"
  65. android:text="@string/own"
  66. android:drawableTop="@drawable/icon_tab_mine_checked"/>
  67.  
  68. <RadioButton
  69. style="@style/bottom_radio_style"
  70. android:id="@+id/rd_more"
  71. android:text="@string/more"
  72. android:drawableTop="@drawable/icon_tab_more_checked"
  73. android:layout_width="0dp"
  74. android:layout_height="match_parent"
  75. android:layout_weight="1" />
  76. </RadioGroup>
  77.  
  78. </LinearLayout>
  79. </TabHost>
  80.  
  81. 通过样式文件更改radioButton的效果
  82.  
  83. <?xml version="1.0" encoding="utf-8"?>
  84.  
  85. <resources xmlns:android="http://schemas.android.com/apk/res/android">
  86.  
  87. <style name="bottom_radio_style">
  88.  
  89. <item name="android:button">@null</item>
  90.  
  91. <item name="android:gravity">center</item>
  92.  
  93. <item name="android:background">@drawable/main_bottom_rd</item>
  94.  
  95. </style>
  96.  
  97. </resources>
  98.  
  99. 选择效果(选择一个标签是的一个选择效果)
  100.  
  101. <?xml version="1.0" encoding="utf-8"?>
  102.  
  103. <selector xmlns:android="http://schemas.android.com/apk/res/android">
  104.  
  105.   <item android:state_enabled="true" android:state_pressed="true" android:drawable="@drawable/main_radio_select"></item>
  106.  
  107.   <item android:state_enabled="true" android:state_checked="true" android:drawable="@drawable/main_radio_select"></item>
  108.  
  109. </selector>
  110.  
  111. activity中的代码设置如下:
  112.  
  113. package cn.liu.activity;
  114. public class MainActivity extends ActivityGroup {
  115. protected static final String TAG = "MainActivity";
  116. private TabHost tabHost = null;
  117. private RadioGroup rGroup;
  118.  
  119. @Override
  120. protected void onCreate(Bundle savedInstanceState) {
  121. super.onCreate(savedInstanceState);
  122. // 设置手机全屏显示
  123. requestWindowFeature(Window.FEATURE_NO_TITLE);
  124. getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
  125. WindowManager.LayoutParams.FLAG_FULLSCREEN);
  126. setContentView(R.layout.main);
  127. // 通过findviewbyId这种方式找到tabhost,就必须要调用
  128. // setup方法,而且如果当前类,没有集成ActivityGroup,会报E/AndroidRuntime(380): java.lang.RuntimeException: Unable to start activity
  129.        ComponentInfo{cn.liu.eat/cn.liu.activity.MainActivity}: java.lang.IllegalStateException: Did you forget to call 'public void
  130. setup(LocalActivityManager activityGroup)且setup必须要设置成this.getLocalActivityManager()这样才不会出问题
  131. tabHost = (TabHost) this.findViewById(R.id.tabhosts);
  132. tabHost.setup(this.getLocalActivityManager());
  133. TabSpec tabSpec1 = tabHost.newTabSpec("tab1").setIndicator("tab1")
  134. .setContent(new Intent(this, HomeActivity.class));
  135. TabSpec tabSpec2 = tabHost.newTabSpec("tab2").setIndicator("tab2")
  136. .setContent(new Intent(this, NearActivity.class));
  137. TabSpec tabSpec3 = tabHost.newTabSpec("tab3").setIndicator("tab3")
  138. .setContent(new Intent(this, MineActivity.class));
  139. TabSpec tabSpec4 = tabHost.newTabSpec("tab4").setIndicator("tab4")
  140. .setContent(new Intent(this, MoreActivity.class));
  141.  
  142. tabHost.addTab(tabSpec1);
  143. tabHost.addTab(tabSpec2);
  144. tabHost.addTab(tabSpec3);
  145. tabHost.addTab(tabSpec4);
  146. tabHost.setCurrentTab(0);
  147.  
  148. rGroup = (RadioGroup) this.findViewById(R.id.main_rdg);
  149. rGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
  150. @Override
  151. public void onCheckedChanged(RadioGroup group, int checkedId) {
  152. switch (checkedId) {
  153. case R.id.rd_index:
  154. tabHost.setCurrentTabByTag("tab1");
  155. break;
  156. case R.id.rd_near:
  157. tabHost.setCurrentTabByTag("tab2");
  158. break;
  159. case R.id.rd_own:
  160. tabHost.setCurrentTabByTag("tab3");
  161. break;
  162. case R.id.rd_more:
  163. tabHost.setCurrentTabByTag("tab4");
  164. break;
  165. }
  166. }
  167. });
  168.  
  169. }
  170.  
  171. }

TabHost结合RadioButton实现主页的导航效果的更多相关文章

  1. 如何使用RadioGroup和RadioButton实现FragmentTabHost导航效果?

    目录: 一.概述 最近在做一个新闻类结合社区的APP的时候,需要添加一个侧滑菜单的效果,考虑到可以使用DrawerLayout布局,但是问题是使用了 DrawerLayout布局后,主页内容应该是一个 ...

  2. 学习使用 CSS3 制作网站面包屑导航效果

    作为最重要的导航展示形式之一,面包屑导航能够让用户更清楚的知道他们所在页面的层次结构,让他们可以方便的导航到上一层页面.在本教程中,您将学习如何使用 CSS3 技术创建自己的面包屑导航效果. 效果演示 ...

  3. 基于 jQuery 实现的精致作品集图片导航效果

    今天,我们要用 jQuery 来创建一个作品集图像的导航模板.我们的想法是,以分组的方式显示一组作品集,并通过二维的方式(水平/垂直)来浏览.任一箭头或当前图像下方的小盒子可以作为导航使用. 在线演示 ...

  4. Pace.js – 超赞的页面加载进度自动指示和 Ajax 导航效果

    在页面中引入 Pace.js  和您所选择主题的 CSS 文件,就可以让你的页面拥有漂亮的加载进度和 Ajax 导航效果.不需要挂接到任何代码,自动检测进展.您可以选择颜色和多种效果,有简约,闪光灯, ...

  5. CSS实现商城分类导航效果(hover选择器)

    学完制作出这个导航效果之后,收获最多的是了解了hover选择器的功能,:hover 选择器用于选择鼠标指针浮动在上面的元素.在鼠标移到元素上时向此元素添加特殊的样式(CSS).例如:改变鼠标悬停处的元 ...

  6. 第74天:jQuery实现图片导航效果

    图片导航效果 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  7. css之纯css实现流程导航效果

    :::tip 使用纯css线上 流程导航效果.     本文统一采取 flex 布局 ,你也可以采用其他布局实现,核心原理不变 ::: ## 方法一 利用裁剪  该方法IE下不支持 利用裁剪 clip ...

  8. Android 使用Toolbar+DrawerLayout快速实现仿“知乎APP”侧滑导航效果

    在以前,做策划导航的时候,最常用的组件便是SlidingMenu了,当初第一次用它的时候觉得那个惊艳啊,体验可以说是非常棒. 后来,Android自己推出了一个可以实现策划导航的组件DrawerLay ...

  9. Android商城开发系列(三)——使用Fragment+RadioButton实现商城底部导航栏

    在商城第一篇的开篇当中,我们看到商城的效果图里面有一个底部导航栏效果,如下图所示: 今天我们就来实现商城底部导航栏,最终效果图如下所示:   那么这种效果是如何实现,实现的方式有很多种,最常见的就是使 ...

随机推荐

  1. heibernate增删改查总结一下自己的不足

    难点也就我不熟悉的是数据库语句的书写,要加强复杂查询语句的书写 /* 简单的在共享类中已经可以用的了 * 总结: * * --------------------------------------查 ...

  2. PHP替换数据库的换行符

    //php 有三种方法来解决 //1.使用str_replace 来替换换行 $str = str_replace(array("\r\n", "\r", &q ...

  3. PTHREAD_MUTEX_INITIALIZER问题

      PTHREAD_MUTEX_INITIALIZER 与 expected expression before ‘{’ token 在进行 Posix thread 编程时,出现以下编译错误:err ...

  4. C# Activator.CreateInstance()

    C#在类工厂中动态创建类的实例,所使用的方法为: 1. Activator.CreateInstance (Type) 2. Activator.CreateInstance (Type, Objec ...

  5. [转]Windows中的命令行提示符里的Start命令执行路径包含空格时的问题

    转自:http://www.x2009.net/articles/windows-command-line-prompt-start-path-space.html 当使用Windows 中的命令行提 ...

  6. Vijos1834 NOI2005 瑰丽华尔兹 动态规划 单调双端队列优化

    设dp[t][x][y]表示处理完前t个时间段,钢琴停留在(x,y)处,最多可以走多少个格子 转移时只需逆着当前倾斜的方向统计len个格子(len为时间区间的长度,len=t-s+1),如果遇到障碍就 ...

  7. (二)跟我一起玩Linux网络服务:BIND的自动部署(附上完整的代码)

    2015-03-24   如果看了我之前写的文章 DNS服务——BIND(/etc/named.conf./var/named)设置实现和解释,再来看这篇文章,你会发现部署BIND是件很简单的事情 如 ...

  8. sphinx (coreseek)——2、区段查询实例

    首先需要知道区段查询的定义: 索引系统需要通过主查询来获取全部的文档信息,一种简单的实现是将整个表的数据读入内存,但是这可能导致整个表被锁定并使得其他操作被阻止(例如:在MyISAM格式上的INSER ...

  9. 解决nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed错误

    重新启动服务器,访问web服务发现无法浏览,登陆服务器之 后进到nginx使用./nginx -s reload重新读取配置文件,发现报nginx: [error] open() "/usr ...

  10. web字体格式转换

    @font-face { font-family: 'emotion'; src: url('emotion.eot'); /* IE9*/ src: url('emotion.eot?#iefix' ...