android tab 实现

一、TabActivity 实现

布局id与结构

TabHost(id不可变,不是继承的TabActivity 可变)(下不能有第二个子控件)
       LinearLayout(id不可变必须使用系统默认的id)(下可加其他布局必须有下面两个)
             TabWidget(id不可变必须使用系统默认的id)
             FrameLayout(id不可变必须使用系统默认的id)

 

TabHost(id不可变(id不可变,不是继承的TabActivity 可变)(下不能有第二个子控件)
       LinearLayout(id不可变必须使用系统默认的id)(下可加其他布局必须有下面两个)
             TabWidget(id不可变必须使用系统默认的id)
             FrameLayout(id不可变必须使用系统默认的id)

 

获得TabHost和设置tab和content(可以view id,TabContentFactory(创建一个view),Intent(Activity跳转))

1.MyActivity继承的是Activity

mTabHost = (TabHost) findViewById(android.R.id.tabhost);

mTabHost.setup();

//如果用intent    

//LocalActivityManager(过时了)    

//LocalActivityManager mLocalActivityManager = new LocalActivityManager(this, false);

//mLocalActivityManager.dispatchCreate(savedInstanceState);

//mTabHost.setup(mLocalActivityManager); 

 

mTabHost.addTab(tabHost.newTabSpec("one").setIndicator("tab1") 
                .setContent(new Intent(this, FirstActivity.class)));  

 

2.MyActivity继承的是ActivityGroup(过时了)

mTabHost = (TabHost) findViewById(android.R.id.tabhost);

mTabHost.setup();

//如果用intent        

// mTabHost.setup(this.getLocalActivityManager())

 

mTabHost.addTab(tabHost.newTabSpec("one").setIndicator("tab1") 
                .setContent(new Intent(this, FirstActivity.class)));  

 

3.MyActivity继承的是TabActivity(过时了)

tabhost = getTabHost();

mTabHost.addTab(tabHost.newTabSpec("one").setIndicator("tab1") 
                .setContent(new Intent(this, FirstActivity.class)));  

 

二、ActivityGroup 实现

radiobutton作为标签,某一个布局作为内容。关键代码

tabContentView.removeAllViews();
tabContentView.addView(getLocalActivityManager().startActivity("two",new Intent(MainView.this, TwoView.class))

 

TabActivity可以用某一视图作为内容,也可用一个Activity作为内容,ActivityGroup用一个Activity作为内容。TabActivity,ActivityGroup用Activity作为内容是,内容activity在创建之后切换页的时候只执行onPause 和 onResume。附件是两种实现。

 

 

三、Fragment实现tab

用radiobutton做标签,一个布局做内容容器关键代码

      FragmentTransaction fragmentTransaction = fragmentManager .beginTransaction();
      fragmentTransaction.add(R.id.container, placeholderFragement);

      fragmentTransaction.replace(R.id.content, fragment);
      fragmentTransaction.commit();

切换tab fragment执行ondestroyview onstop onpause oncreateview onstart onresume

 

附件有代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Tab 可以使用以下两种样式: 1. 顶部 Tab 样式: 在布局文件中使用 TabLayout 控件,然后在代码中为 TabLayout 添加 Tab,可以设置 Tab 的标题、图标等属性。可以使用 setCustomView() 方法自定义 Tab 的布局。 示例代码: ```xml <com.google.android.material.tabs.TabLayout android:id="@+id/tab_layout" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabGravity="fill" app:tabMode="fixed" /> ``` ```java TabLayout tabLayout = findViewById(R.id.tab_layout); tabLayout.addTab(tabLayout.newTab().setText("Tab1")); tabLayout.addTab(tabLayout.newTab().setText("Tab2")); tabLayout.addTab(tabLayout.newTab().setText("Tab3")); ``` 效果图: ![tab_layout](https://img-blog.csdnimg.cn/20211201160053611.png) 2. 底部 Tab 样式: 可以使用 BottomNavigationView 控件实现底部 Tab 样式,类似于微信、QQ 等应用的底部导航栏。 示例代码: ```xml <com.google.android.material.bottomnavigation.BottomNavigationView android:id="@+id/bottom_navigation_view" android:layout_width="match_parent" android:layout_height="wrap_content" app:menu="@menu/bottom_navigation_menu" /> ``` ```java BottomNavigationView bottomNavigationView = findViewById(R.id.bottom_navigation_view); bottomNavigationView.setOnNavigationItemSelectedListener(item -> { switch (item.getItemId()) { case R.id.menu_home: // 切换到首页 break; case R.id.menu_message: // 切换到消息页面 break; case R.id.menu_mine: // 切换到个人中心页面 break; } return true; }); ``` 效果图: ![bottom_navigation_view](https://img-blog.csdnimg.cn/20211201160230467.png)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值