欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

模仿微信界面tabhost底部导航——使用继承ActivityGroup方式

程序员文章站 2022-05-22 17:00:32
...

在一般常见的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上面。

 

效果图:


模仿微信界面tabhost底部导航——使用继承ActivityGroup方式
            
    
    博客分类: android androidtabhost底部导航activity 
 

 

  • 模仿微信界面tabhost底部导航——使用继承ActivityGroup方式
            
    
    博客分类: android androidtabhost底部导航activity 
  • 大小: 191.3 KB