云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > ActionBar笔记

ActionBar笔记

  • 62 次阅读
  • 3 次下载
  • 2026/4/23 22:59:53

第14章 ActionBar 第12章Fragment 本章内容:(操作栏、Fragment、操作栏和Fragment实现Tab导航栏)

? 操作栏(ActionBar)和Fragment是Android 3.0新引入的界面控件,一定程度上是为了适应Android平板电脑等

大屏幕设备界面设计需要而产生的

? 主要目的有两个,一是使用动作栏制作导航条,即将起导航作用的Tab选项卡放在动作栏中,方便程序在各个

模块之间进行切换,二是将选项菜单的菜单项放置在动作栏中,方便用户使用选项菜单中的菜单项。

? 当Activity对象开启使用动作栏后,动作栏将出现在Activity对象视图区的上方,动作栏有图标和标题,如果不

特意设置它们的话,动作栏的图标/标题与应用程序的图标/标题相同。动作栏中可以放置Tab选项卡或选项菜单的菜单项。

? 在Android 4.0系统中得到了进一步的发展,可以良好的支持不同屏幕尺寸的设备,并可以根据屏幕大小的不同

改变显示内容

一、操作栏

? 操作栏(Action Bar)代替传统的“标题栏”和“选项菜单”功能 ? 操作栏左侧的图标是应用程序的图标(Logo),图标旁边是应用程序当前Activity的标题,右侧的多个图标则是“选

项菜单”中的菜单项

? 可以提供多个实用的功能:

(1)将“选项菜单”的菜单项显示在操作栏的右侧; (2)基于Fragment实现类似于Tab页的导航切换功能; (3)为导航提供可“拖拽—放置”的下拉列表; (4)可在操作栏上实现类似于“搜索框”的功能。 ? 操作栏的实际显示效果,取决于屏幕分辨率和屏幕方向

? 在AndroidManifest.xml配置文件的标记中给出android:theme属性的值,该值是:

\,表示开启该Activity对象的动作栏。(有的书和视频说默认不能使用动作栏,但我感觉安卓4.0默认可以使用动作栏,若要隐藏操作栏,方法一为在AndroidManifest.xml中设置

控制该行为的主菜单项属性是android:showAsAction,如:android:showAsAction=\这个属性可接受的值有:

(1)always:这个值会使菜单项一直显示在Action Bar上。

(2)ifRoom:如果有足够的空间,这个值会使菜单项显示在Action Bar上。 (3)never:这个值使菜单项永远都不出现在Action Bar上。

(4)withText:这个值使菜单项和它的图标,菜单文本一起显示。 【例】res——menu——mymenu中完整代码如下:

android:showAsAction=\

1

android:showAsAction=\

android:showAsAction=\

android:showAsAction=\

android:title=\订阅\

android:showAsAction=\

2、添加代码,如下:

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);

ActionBar actionBar = getActionBar(); //获得动作栏 //

actionBar.hide();// 隐藏动作栏

//actionBar.setDisplayShowTitleEnabled(false);//隐藏标题

// actionBar.setDisplayShowHomeEnabled(false); //隐藏左上角图标

}

@Override

public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater();

inflater.inflate(R.menu.main_menu, menu);//解析xml菜单 return true;

} @Override

public boolean onOptionsItemSelected(MenuItem item){ TextView label = (TextView)findViewById(R.id.label); switch(item.getItemId()) {

case R.id.main_menu_0:

label.setText(\打印,菜单ID:\ + item.getItemId()); return true;

case R.id.main_menu_1:

label.setText(\新建,菜单ID:\ + item.getItemId()); return true;

case R.id.main_menu_2:

label.setText(\邮件,菜单ID:\ + item.getItemId()); return true;

case R.id.main_menu_3:

label.setText(\设置,菜单ID:\ + item.getItemId()); return true;

case R.id.main_menu_4:

label.setText(\订阅,菜单ID:\ + item.getItemId()); return true; }

2

}

return false;

}

【注】在AndroidManifest.xml里的Activity加上属性android:uiOptions=\后,普通ActionBar将不再显示在标题栏部分,而是显示在屏幕底部。

3、显示菜单项时采用自定义布局

(1)在item标签中添加android:actionLayout属性,并将属性值定义为需要显示的布局文件

android:showAsAction=\ android:actionLayout=\/> 注:代码第5行表示显示该菜单项时,采用/layout/printview.xml文件作为自定义布局 (2)printview.xml文件的完整代码如下:

android:layout_width=\ android:layout_height=\ android:src=\

android:layout_width=\ android:layout_height=\ android:hint=\输入需要打印的文件名称\ android:ems=\

注:android:ems = \设置TextView或者Edittext的宽度为12个字符的宽度。当设置该属性后,控件显示的长度就为12个字符的长度,超出的部分将不显示。 4、向动作栏增加Tab选项卡 1)获得动作栏

Activity对象可以使用getActionBar()得到系统提供的ActionBar对象,即得到动作栏,得到动作栏之后,动作栏默认可见,如果想隐藏动作栏,可以让动作栏调用hide()方法,想再显示动作栏可以让动作栏调用show()方法。

动作栏主要用于放置Tab选项卡,因此,获得动作栏之后,需要将动作栏的模式设置成NAVIGATION_MODE_TABS模式,如下所示:

ActionBar actionBar = getActionBar();//获得动作栏

actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); // 设置动作栏导航模式 2)获得Tab选项卡

ActionBar.Tab类的实例称为Tab选项卡。动作栏调用newTab()方法可以返回一个Tab选项卡:ActionBar.Tab tab = actionBar.newTab();

要求newTab()方法返回的Tab选项卡必须注册有TabListener监视器,即要求Tab选项卡能对用户选择它作出某种响应。

3)向动作栏添加Tab选项卡

动作栏可以调用addTab(ActionBar.Tab tab)方法添加参数指定的Tab选项卡,例如actionBar.addTab(tab); 注: 如果动作栏添加了一个没有注册TabListener监视器的Tab选项卡,那么项目可以通过编译(debug),但会发生运行异常,系统将终止程序的运行。 5、Tab选项卡注册监视器的方法 Tab选项卡注册监视器的方法是

3

setTabListener(ActionBar.TabListener listener)

ActionBar.TabListener接口中有如下三个方法:

● public void onTabSelected (ActionBar.Tab tab, FragmentTransaction ft)

用户将未选中的Tab选项卡变为选中状态时,监视器调用该方法,参数tab是当前用户操作的Tab选项卡。 ●public void onTabReselected (ActionBar.Tab tab, FragmentTransaction ft)

用户释放选中的Tab选项卡时,监视器调用该方法,参数tab是当前用户操作的Tab选项卡。 ●public void onTabUnselected (ActionBar.Tab tab, FragmentTransaction ft)

用户将选中的Tab选项卡变为未选中状态时,监视器调用该方法,参数tab是当前用户操作的Tab选项卡。 6、ActionBar的常用方法

void addTab(ActionBar.Tab tab, boolean setSelected):添加Tab选项卡,并指定状态。

● void addTab(ActionBar.Tab tab, int position) :添加Tab选项卡,并指定位置,位置索引从0开始。 int getTabCount():返回其中的Tab选项卡的数目。

● void setIcon(int resId)与void setIcon(Drawable icon):设置动作栏的图标。

● void setTitle(int resId) 与void setTitle(CharSequence title):设置动作栏的标题。 ● void setDisplayShowTitleEnabled(boolean showTitle) :设置是否显示动作栏的标题

● void setDisplayShowHomeEnabled(boolean showHome) :设置是否显示动作栏的图标。当取值false时,动作栏将出现在最顶端

7、Tab的常用方法

● ActionBar.Tab setIcon(Drawable icon)与 setIcon(int resId) :设置选项卡上的图标。 ● ActionBar.Tab setTabListener(ActionBar.TabListener listener) :为选项卡注册监视器。 ● ActionBar.Tab setTag(Object obj) :为选项卡设置一个备用对象。

● ActionBar.Tab setText(int resId)与setText(CharSequence text) :设置选项卡上的文本。 8、菜单项与Tab选项卡的位置关系

动作栏自动分成互不干扰的两行,第一行用于放置选项菜单的菜单项,第二行放置Tab选项卡。

需要注意是,当动作栏中放置了选项菜单的菜单项后,程序将不再显示动作栏的标题,只显示动作栏的图标,而且如果向动作栏放置了较多的菜单项后,使得菜单项的宽度之和超出了Activity对象的视图的宽度,动作栏的第一行不会自动水平滚动,用户将无法看到全部的菜单项。 二、Fragment 1.简介

? 用途是在大屏幕设备上实现灵活、动态的界面设计

? 可以被设计成为可重用模块的,因为每个Fragment都有自己的布局和生命周期回调函数,可以将同一个

Fragment放置到多个不同的Activity中

? 为了重复使用Fragment,应该避免直接从一个Fragment去操纵另一个Fragment,这样会增加两个Fragment之

间的耦合度,不利于模块的重用

2.Fragment生命周期

Fragment具有与Activity类似的生命周期,但比Activity支持更多的事件回调函数

4

搜索更多关于: ActionBar笔记 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

第14章 ActionBar 第12章Fragment 本章内容:(操作栏、Fragment、操作栏和Fragment实现Tab导航栏) ? 操作栏(ActionBar)和Fragment是Android 3.0新引入的界面控件,一定程度上是为了适应Android平板电脑等大屏幕设备界面设计需要而产生的 ? 主要目的有两个,一是使用动作栏制作导航条,即将起导航作用的Tab选项卡放在动作栏中,方便程序在各个模块之间进行切换,二是将选项菜单的菜单项放置在动作栏中,方便用户使用选项菜单中的菜单项。 ? 当Activity对象开启使用动作栏后,动作栏将出现在Activity对象视图区的上方,动作栏有图标和标题,如果不特意设置它们的话,动作栏的图标/标题与应用程序的图标/标题相同。动作栏中可以放置Tab选项

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com