现在一般的app都使用底部菜单栏,那具体怎么实现的呢!我们就来看看

首先给大家展示一下布局文件

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     android:orientation="vertical" android:layout_width="match_parent"
 3     android:layout_height="match_parent">
 4     <FrameLayout
 5 android:id="@+id/realtabcontent"  6 android:layout_width="fill_parent"  7 android:layout_height="0dip"  8 android:layout_weight="1"  9 android:background="@color/white" /> 10 11 12 <LinearLayout 13 android:layout_width="match_parent" 14 android:layout_height="wrap_content" 15 android:layout_gravity="bottom" 16 android:orientation="vertical"> 17 18 <View 19 android:layout_width="match_parent" 20 android:layout_height="1px" 21 android:background="@color/color_home_tab_line" /> 22 23 <android.support.v4.app.FragmentTabHost 24 android:id="@android:id/tabhost" 25 android:layout_width="fill_parent" 26 android:layout_height="wrap_content" 27 android:background="@color/et_divider_disable"> 28 29 <FrameLayout 30 android:id="@android:id/tabcontent" 31 android:layout_width="0dp" 32 android:layout_height="0dp" 33 android:layout_weight="0" /> 34 </android.support.v4.app.FragmentTabHost> 35 36 </LinearLayout> 37 </LinearLayout>

接下来就是怎么使用了,其实比较简单,我们就看代码吧!

 1 //数据
 2 private int mImageViewArray[] = {R.drawable.home_tab1, R.drawable.home_tab2, R.drawable.home_tab3};
 3     private String mTextviewArray[] = {"首页", "设置","我的"};
 4     private Class fragmentArray[] = {Fragment1.class, Fragment2.class, Fragment3.class};
 5
 6 //初始化以及设置数据
 7  mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
 8         mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);
 9         int count = fragmentArray.length;
10         for (int i = 0; i < count; i++) {
11             TabHost.TabSpec tabSpec = mTabHost.newTabSpec(mTextviewArray[i])
12                     .setIndicator(getTabItemView(i));
13             mTabHost.addTab(tabSpec, fragmentArray[i], null);
14             mTabHost.getTabWidget().getChildAt(i)
15                     .setBackgroundResource(R.drawable.bg_tbitem);
16         }
17         mTabHost.setCurrentTabByTag(mTextviewArray[0]);
18         mTabHost.getTabWidget().setDividerDrawable(null);
19
20         mTabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {
21             @Override
22             public void onTabChanged(String s) {
23
24
25             }
26         });
27
28
29  /**
30      * 项的样式
31      *
32      * @param index 第几个
33      * @return 每一个Tab样式
34      */
35     private View getTabItemView(int index) {
36         View view = layoutInflater.inflate(R.layout.tab_home_item, null);
37         ImageView imageView = (ImageView) view.findViewById(R.id.icon);
38         imageView.setImageResource(mImageViewArray[index]);
39         TextView textView = (TextView) view.findViewById(R.id.name);
40         textView.setText(mTextviewArray[index]);
41         return view;
42     }

对了,其中图片我们都设置成了selector,才有点击变色的效果

1 <selector xmlns:android="http://schemas.android.com/apk/res/android">
2     <item android:drawable="@drawable/btn_jiance_pre" android:state_pressed="false" android:state_selected="true" />
3     <item android:drawable="@drawable/btn_jiance_nor" android:state_focused="false" android:state_pressed="false" android:state_selected="false" />
4     <item android:drawable="@drawable/btn_jiance_pre" android:state_focused="true" android:state_pressed="true" />
5 </selector>

转载于:https://www.cnblogs.com/wangying222/p/6289858.html

FragmentTabHost+FrameLayout实现底部菜单栏相关推荐

  1. 【Android UI设计与开发】5.底部菜单栏(二)使用Fragment实现底部菜单栏

    既然 Fragment 取代了TabActivity,当然 TabActivity 的能实现的菜单栏,Fragment 当然也能实现.主要其实就是通过菜单栏的点击事件切换 Fragment 的显示和隐 ...

  2. Android底部菜单栏 仿微博效果

    实现方式一:通过TabWidget实现 这种方式主要是在布局中将TabWidget标签嵌套在RelativeLayout中,并且在TabWidget标签中中设置 android:layout_alig ...

  3. 【Android UI设计与开发】第09期:底部菜单栏(四)Fragment+PopupWindow仿QQ空间最新版底部菜单栏

    转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/9023451          在今天的这篇文章当中,我依然会以实战加理论结合 ...

  4. 【Android UI设计与开发】第06期:底部菜单栏(一)使用TabActivity实现底部菜单栏

    转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/8989063       从这一篇文章开始,我们将进入到一个应用程序主界面UI ...

  5. android viewpager 底部tabhost,FragmentTabHost+ViewPager实现底部导航栏

    首先使用FragmentTabHost实现底部菜单栏. content_act_main.xml xmlns:app="http://schemas.android.com/apk/res- ...

  6. android radiogroup 底部菜单,Android底部菜单栏(RadioGroup+Fragment)美化

    众所周知,android的底部菜单栏太重要,平时项目一般都是需要用到的,但是网上关于这方面的demo做得太丑了,实在惨不忍睹,所以这里便用RadioGroup+Fragment的方式写了一个,顺便美化 ...

  7. Android底部菜单栏(图片+文字)

    虽然网上有很多底部菜单栏的实现方式,但是实现方式各种各样,很多也不符合自己的口味,所以还是总结下底部菜单栏的实现方式,以便以后方便查询使用 实现方式一:通过TabWidget实现 这种方式主要是在布局 ...

  8. 安卓微信 返回显示未读条数_Android仿微信底部菜单栏功能显示未读消息数量

    底部菜单栏很重要,我看了一下很多应用软件都是用了底部菜单栏,这里使用了tabhost做了一种通用的(就是可以像微信那样显示未读消息数量的,虽然之前也做过但是layout下的xml写的太臃肿,这里去掉了 ...

  9. android底部菜单栏demo

    上一个项目已经做完了,这周基本上没事,所以整理了下以前的项目,想把一些通用的部分封装起来,这样以后遇到相似的项目就不用重复发明轮子了,也节省了开发效率.今天把demo贴出来一是方便以后自己查询,二是希 ...

  10. 小程序自定义底部菜单栏

    问题:小程序的底部菜单栏基本的样式根本不能满足我们的审美要求,所以我们可以通过自己来自定义一套小程序底部栏,可以设置透明背景哟,想要什么样式都可以自己定义,好了,废话不多说,直接上代码! 首先在和pa ...

最新文章

  1. 平板python_Wacom平板电脑的Python示例
  2. qvector 结构体排序_C++结构体的应用_YCOJ
  3. linux给文件赋权限找不到,linux 文件赋权限
  4. Apache CXF 3.0:CDI 1.1支持可替代Spring
  5. 如何在Linux中找到您的IP地址
  6. TensorFlow2.0:模型的保存与加载
  7. 条件表达式计算个人所得税c语言,个税的计算C语言实现,结果为什么是负的?...
  8. JS中判断某个字符串是否包含另一个字符串的方法
  9. mysql单机热备份_mysql数据库热备份
  10. Apache Storm技术实战之3 -- TridentWordCount
  11. 易语言修改虚拟机硬盘id_易语言本地虚拟机源码
  12. 同济第七版高数资料(教材+习题解答)
  13. SoC,SiP,IP和Chiplet的区别
  14. DarkComet RAT简介
  15. 第十三届蓝桥杯大赛软件赛省赛 Python 大学 B 组
  16. 利用python对b站某GPT-4解说视频的近万条弹幕进行爬取、数据挖掘、数据分析、弹幕数量预测及情绪分类
  17. [数据分析与可视化] Python绘制数据地图2-GeoPandas地图可视化
  18. IT行业招聘技巧--渠道篇
  19. NLP领域的最新研究进展
  20. Drools从入门到精通

热门文章

  1. stc和sac_短期成本曲线
  2. 8086可以用c语言编程吗,[求助]如何将C程序反汇编成8086汇编程序
  3. python3 socket sendall_全网最详细python中socket套接字send与sendall的区别
  4. python linux开发_python之Linux开发环境安装
  5. Java网络编程之UDP
  6. 【渝粤教育】国家开放大学2018年秋季 0221-22T数字电子电路 参考试题
  7. 深度优先遍历(DFS)例题
  8. ubuntu16.04中ROS-Kinetic安装Arbotix
  9. 一个农民工学习LINUX内核的艰辛历程/嵌入式的感受
  10. http://visualgo.net/ 数据结构可视化。。。。