Android 学习笔记11 ActionBar

Day11 ActionBar


  • ActionBar 概述
  • Java代码
  • XML属性
  • 自定义ActionView
  • Tab
  • 零散知识点

概述

在Android3.0之后引入的ActionBar,用于取代3.0之前的标题栏。

不需要导入ActionBar,因为在android3.0或者以上版本中,ActionBar已经默认的包含在Activity中
在Android3.0的默认主题“holographic”中,已经创造了ActionBar
当android:minSdkVersion 或者 android:targetSdkVersion 属性被设置成11或者更高时,应用会被认为是Android3.0版本(默认含有ActionBar)

相关Java代码

    //获取当前activity的ActionBar
    ActionBar actionBar = getActionBar();
    //设置ActionBar显示、隐藏
    actionBar.show();
    actionBar.hide();
    //判断actionBar状态
    actionBar.isShowing();
    //设置窗口小图标可以被点击(一般会在第二页面时启用HomeButton)
    actionBar.setDisplayShowHomeEnabled(true);
    actionBar.setDisplayHomeAsUpEnabled(true);

XML属性

通过对Menu内容的配置改变actionBar的显示模式

android:showAsAction
- always : 总是显示该ActionView
- never : 从不显示
- ifRoom : 当空间充足时显示
- withText :带有文字的ActionView,当空间充足时显示title属性定义的值。

android:icon 属性:设置项的图标
android:title属性:设置项的文字

配置文件

设置ActionBar分割
设置当屏幕宽度的空间不足时,将ActionBar从标题栏中分隔出来

android:uiOptions
- splitActionBarWhenNarrow"

自定义ActionView

自定义ActionView是在菜单项XML文件中为其指定控件布局

  • android:actionViewClass 设置ActionView控件的UI类
    • 值为UI类完整名称(包名+类名)
  • android:actionLayout 属性设置自定义ActionView的布局文件
    • 布局文件id
  <item
        android:id="@+id/action_search"
        android:orderInCategory="100"
        android:showAsAction="ifRoom"
        android:actionViewClass="android.widget.SearchView"
        android:title="检索"/>

    <!-- actionLayout 属性设置自定义ActionView的布局文件 -->
     <item
        android:id="@+id/action_search_custom"
        android:orderInCategory="100"
        android:showAsAction="always|collapseActionView"
        android:actionLayout="@layout/actionview_search"
        android:icon="@android:drawable/ic_menu_agenda"
        android:title="自定义检索"/>

如何获取Menu中的ActionView?

    //从Menu中查找SearchView所在的MenuItem
     MenuItem mItem=menu.findItem(R.id.action_search);

     //从MenuItem中获取ActionView,并强转为SearchView
     SearchView searchView=(SearchView) mItem.getActionView();

TAB

DSAD

  • 使用ActionBar的Tab导航
    • 设置ActionBar的导航的模式为TABS
    • 当前Activity实现ActionBar.TabListener接口(Tab的选择与取消选择等事件
    • 通过ActionBar类对象的newTab() 创建Tab选项卡,同时设置显示的标题和事件监听
    • 通过ActionBAr类对象的addTab()方法,将创建的Tab增加到ActionBar中
    • 在Tab选择事件方法中,动态地显示Fragment
    // 初始化ActionBar中的相关设置
    actionBar=getActionBar();//获取ActionBar对象

    //1. 设置ActionBar的导航模式: tab选项卡的导航模式
    //非常重要,不设置会不显示
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    //3. 创建Tab
    Tab tab1=actionBar.newTab()
                    .setText("头条")
                    .setIcon(android.R.drawable.ic_menu_add)
                    .setTabListener(this);
    //4.实现TabListener的方法
    //FragmentTransaction ft传递了FragMent事务,可直接使用
    @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
    }
    @Override
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
    }
    @Override
    public void onTabReselected(Tab tab, FragmentTransaction ft) {
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值