在一般常见的app中,常常会用到底部导航,而android默认的是顶部导航。目前的android版本中,已经不再推荐使用extends TabActivity的方式来创建tabhost,但作为比较常见的一种方式,还是在自己做项目的过程中总结一下。
需要注意的是,每个tabhost选项卡可能是由一个Intent启动的,此时每个选项卡对应一个Activity.废话不多说,帖代码!
Activity:
public class MainActivity extends ActivityGroup{ private TabHost tabHost; //资源文件 private Class[] activitys = {TabActivity_book.class, TabActivity_search.class, TabActivity_account.class}; private String[] titles = {"机票预订", "订单查询", "我的账号"}; private int[] images = {R.drawable.book, R.drawable.search, R.drawable.account}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化tab标签 tabHost = (TabHost) findViewById(R.id.mytabhost); tabHost.setup(this.getLocalActivityManager());//表明继承TabActivity,由于只能单继承,所以只好在这里写 //创建标签 for(int i=0; i<activitys.length; i++) { View view = View.inflate(this, R.layout.tab_layout, null); //设置imageView ImageView imageView = (ImageView) view.findViewById(R.id.image); // imageView.setImageDrawable(getResources().getDrawable(images[i])); //设置textView TextView textView = (TextView) view.findViewById(R.id.title); textView.setText(titles[i]); //设置跳转的Intent Intent intent = new Intent(this, activitys[i]); //设置TabSpec TabSpec spec = tabHost.newTabSpec(titles[i]).setIndicator(view).setContent(intent); tabHost.addTab(spec); } }
布局文件:
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/mytabhost" android:layout_width="fill_parent" android:layout_height="fill_parent"> <!-- 需要一个布局管理器 --> <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent" > <!-- 由于TabHost是继承于FrameLayout,所以需要一个FrameLaytout布局(内容页) ,id 必须为tabcontent --> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="fill_parent" > </FrameLayout> <!-- TabWidget必须标签,用来存放tab标签,且id必须为tabs --> <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/tab_widget_background" android:layout_alignParentBottom="true" > <!-- android:layout_alignParentBottom="true" --> </TabWidget> </RelativeLayout> </TabHost>
注意:
1. activity还能继承自TabHost,此时activity中获取tabhost的代码可这样写:tabHost = getTabHost(),但同时布局文件中tabhost的id必须使用系统自定义的Id:android:id="@android:id/tabhost"
2. 要使导航位于底部,FrameLaytout(内容页)必须放在TabWidget上面。
效果图:
相关推荐
Android源码——TabHost内嵌ActivityGroup界面管理源码_new_17.7z
安卓Android源码——TabHost内嵌ActivityGroup界面管理源码.zip
Android源码——TabHost内嵌ActivityGroup界面管理源码_new_17.zip
一个使用FragmentTabHost搭建的仿微信界面Demo,方便以后复习使用
ImageView 圆环旋转+仿微信底部TabHost+fragment
tabhost底部导航栏,真实可用。。。。。。。。。。。。。。
很长一段时间没有上传资源了,最近觉得微信的主界面滑动很好用,研究了下,秉着开源精神,这里把资源公布出来,供大家免费下载。 主要有 TabHost + Fragment 来实现。 当然,另一种实现方式是 ViewGroup + ViewPager...
主界面tabhost+activitygroup框架
android TabHost 底部显示 实现了底部显示选项卡
使用TabHost实现底部菜单栏,很好用的啊,欢迎下载啊,欢迎指导批评,若是不好的话。个人亲自测试可以的啊。
程序总体使用TabHost实现微信界面的四个模块,在每一个tab选项布局里使用自定义的ListView,添加ImageView和TextView控件,显示通讯录列表信息。自定义ListView的列表项布局文件,将每个ListView要显示的内容构成一个...
此种风格可以有很多种实现方式,其中也包括了TabActivity去实现的,TabActivity 里面每个选项卡里面会有个默认的界面,但是当你的应用这个模块里面不止是一个界面,并且第二个界面里面,还需要你去显示下面的选项卡,...
仿微信例子,使用TabHost实现底部tab,可以显示未读信息条数。适合初学者学习研究。
NULL 博文链接:https://dengyin2000.iteye.com/blog/1632740
Android底部导航栏——FragmentTabHost+ViewPager+Fragment
点击TabHost的tab页,切换后更换tab背景颜色
fragment替换tabhost仿微信首页,适应3.0以上
android中tabhost和ActivityGroup的组合使用,特别是对多个Activity之间的跳转,压栈出战的管理,很有帮助。
仿微信TabHost.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。