Android编程之ActionBar Tabs用法实例分析

发布时间 - 2026-01-11 00:09:52    点击率:

本文实例讲述了Android编程之ActionBar Tabs用法。分享给大家供大家参考,具体如下:

这里主要实现用Tab切换不同的Fragment,点击View显示or隐藏ActionBar,把ActionBar 设为透明,使界面更加友好,详细代码见资源里的ActionBarTabs。

ActionBar Tab主要用于Fragment之间的切换,其必须要设置ActionBar.TabListener,详细代码如下

ActionBarActivity.Java:

import android.app.ActionBar;
import android.app.Activity;
import android.app.FragmentTransaction;
import android.app.ActionBar.Tab;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.MotionEvent;
import android.view.Window;
public class ActionBarActivity extends Activity {
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //使ActionBar变得透明
    requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
    setContentView(R.layout.main);
    final ActionBar actionBar = getActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    // remove the activity title to make space for tabs
    actionBar.setDisplayShowTitleEnabled(false);
    AFragment aFragment = new AFragment();
    actionBar.addTab(actionBar.newTab().setText("Tab-A")
        .setTabListener(new ListenerA(aFragment)));
    BFragment bFragment = new BFragment();
    actionBar.addTab(actionBar.newTab().setText("Tab-B")
        .setTabListener(new ListenerB(bFragment)));
  }
  //点击显示or隐藏ActionBar
  public boolean onTouchEvent(MotionEvent event){
    ActionBar bar = getActionBar();
    switch(event.getAction()){
      case MotionEvent.ACTION_UP:
        if(bar.isShowing()) bar.hide();
        else bar.show();
        break;
      default:
          break;
    }
    return true;
  }
  private class ListenerA implements ActionBar.TabListener {
    private AFragment mFragment;
    // Called to create an instance of the listener when adding a new tab
    public ListenerA(AFragment fragment) {
      mFragment = fragment;
    }
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
      ft.add(R.id.fragment, mFragment, null);
    }
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
      ft.remove(mFragment);
    }
    public void onTabReselected(Tab tab, FragmentTransaction ft) {
      // do nothing }
    }
  }
  private class ListenerB implements ActionBar.TabListener {
    private BFragment mFragment;
    // Called to create an instance of the listener when adding a new tab
    public ListenerB(BFragment fragment) {
      mFragment = fragment;
    }
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
      ft.add(R.id.fragment, mFragment, null);
    }
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
      ft.remove(mFragment);
    }
    public void onTabReselected(Tab tab, FragmentTransaction ft) {
      // do nothing }
    }
  }
}

其中涉及到两个Fragment,在前面Fragment的笔记中讲过,这里就不再赘述。类AFragment实现如下,BFragment实现与这类似:

public class AFragment extends Fragment {
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
      Bundle savedInstanceState) {
    return inflater.inflate(R.layout.alayout, container, false);
    }
}

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。


# Android  # ActionBar  # Tabs  # Android如何创建自定义ActionBar  # Android用ActionBar高仿微信主界面的实例代码  # Android菜单的定义及ActionBar的实现  # Android学习笔记之ActionBar Item用法分析  # Android3.0 ActionBar导航标题栏使用解析  # Android 活动条ActionBar的详解及实例代码  # Android中通过ActionBar为标题栏添加搜索及分享视窗  # Android  ActionBar控件操作使用详解  # 进阶  # 相关内容  # 设为  # 感兴趣  # 这类  # 给大家  # 涉及到  # 在前面  # 更多关于  # 主要用于  # 解决方法  # 所述  # 程序设计  # 讲过  # 必须要  # 讲述了  # activity  # Called  # extends  # void 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么导出Excel文件_Laravel Excel插件使用教程  Laravel Fortify是什么,和Jetstream有什么关系  Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询  如何在阿里云高效完成企业建站全流程?  Laravel如何自定义分页视图?(Pagination示例)  Laravel storage目录权限问题_Laravel文件写入权限设置  详解jQuery停止动画——stop()方法的使用  Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】  长沙做网站要多少钱,长沙国安网络怎么样?  C#如何调用原生C++ COM对象详解  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  Laravel用户密码怎么加密_Laravel Hash门面使用教程  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  C++时间戳转换成日期时间的步骤和示例代码  phpredis提高消息队列的实时性方法(推荐)  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  如何在VPS电脑上快速搭建网站?  Bootstrap整体框架之JavaScript插件架构  Python文件操作最佳实践_稳定性说明【指导】  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】  网站制作价目表怎么做,珍爱网婚介费用多少?  EditPlus中的正则表达式 实战(1)  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  javascript中闭包概念与用法深入理解  教学论文网站制作软件有哪些,写论文用什么软件 ?  javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】  Android中AutoCompleteTextView自动提示  怎样使用JSON进行数据交换_它有什么限制  JavaScript Ajax实现异步通信  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  佛山企业网站制作公司有哪些,沟通100网上服务官网?  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  如何快速搭建二级域名独立网站?  详解vue.js组件化开发实践  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  高端网站建设与定制开发一站式解决方案 中企动力  Laravel如何创建自定义中间件?(Middleware代码示例)  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  在线教育网站制作平台,山西立德教育官网?  Laravel如何与Pusher实现实时通信?(WebSocket示例)  微信小程序制作网站有哪些,微信小程序需要做网站吗?  简历在线制作网站免费版,如何创建个人简历?