在一般常见的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};@Overrideprotected 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);//设置imageViewImageView imageView = (ImageView) view.findViewById(R.id.image);//imageView.setImageDrawable(getResources().getDrawable(images[i]));//设置textViewTextView textView = (TextView) view.findViewById(R.id.title);textView.setText(titles[i]);//设置跳转的IntentIntent intent = new Intent(this, activitys[i]);//设置TabSpecTabSpec 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上面。

效果图:



更多相关文章

  1. 安全新手入坑——HTML标签
  2. 一款常用的 Squid 日志分析工具
  3. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  4. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  5. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  6. mono for android software自动更新
  7. Your Android(安卓)SDK is missing, out of date or corrupted
  8. Android平台搭建
  9. Android(安卓)JNI 调用

随机推荐

  1. Android串口通信(Android Studio)
  2. Andriod数据推送方案
  3. Android结合kotlin使用coroutine的方法实
  4. Android Touch事件分发响应机制
  5. 好用的ReactNative下拉刷新上拉加载的组
  6. android的action
  7. Android中软键盘弹出时底部布局上移问题
  8. Android GLES多线程处理
  9. 基于android和arduino 的小车控制
  10. OnClick与android:focusableInTouchMode=