Action Bar主要功能包括:

  1. 显示选项菜单

  2. 提供标签页的切换方式的导航功能,能够切换多个fragment. 

  3.  提供下拉的导航条目.

  4. 提供交互式活动视图取代选项条目 

  5. 使用程序的图标作为返回Home主屏或向上的导航操作。

首先说下,使用OverFlow的时候须要在onCreate()函数中调用例如以下方法:

private void forceShowOverflowMenu() {
try {
ViewConfiguration config = ViewConfiguration.get(this);
Field menuKeyField = ViewConfiguration.class
.getDeclaredField("sHasPermanentMenuKey");
if (menuKeyField != null) {
menuKeyField.setAccessible(true);
menuKeyField.setBoolean(config, false);
}
} catch (Exception e) {
e.printStackTrace();
}
}

注:此处未使用这样的实现方式。本应用中使用的PopupMen

下面是自己开发的项目所使用到的ActionBar:

public class ShopOrderActivity extends ActionBarActivity implements
OnTouchListener, OnMenuItemClickListener{
private Toast mToast;
private Context context;
/** AlertDialog中输入反馈框 */
private EditText et_FeedBack;
private PopupMenu popupMenu; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.shop_order); //设置Home图标区域
// requestWindowFeature(Window.FEATURE_LEFT_ICON);
// setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, resId); this.context = this;
mToast = Toast.makeText(this, "", Toast.LENGTH_LONG); initActionBar();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.actionbar_menu, menu);
return true;
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.actionbar_overflow) {
if (popupMenu == null) {
popupMenu = new PopupMenu(this,
findViewById(R.id.actionbar_overflow));
popupMenu.inflate(R.menu.actionbar_pop);
popupMenu.setOnMenuItemClickListener(this);
}
popupMenu.show();
return true;
} else if (<pre name="code" class="java">public class ShopOrderActivity extends ActionBarActivity implements
OnTouchListener, OnMenuItemClickListener{
private Toast mToast;
private Context context;
/** AlertDialog中输入反馈框 */
private EditText et_FeedBack;
private PopupMenu popupMenu; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.shop_order); //设置Home图标区域
// requestWindowFeature(Window.FEATURE_LEFT_ICON);
// setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, resId); this.context = this;
mToast = Toast.makeText(this, "", Toast.LENGTH_LONG); initActionBar();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.actionbar_menu, menu);
return true;
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.actionbar_overflow) {
if (popupMenu == null) {
popupMenu = new PopupMenu(this,
findViewById(R.id.actionbar_overflow));
popupMenu.inflate(R.menu.actionbar_pop);
popupMenu.setOnMenuItemClickListener(this);
}
popupMenu.show();
return true;
} else if (id == android.R.id.home) {
finish();
} else if (id == R.id.new_order_bar) {
showTip("显示红点");
}
return super.onOptionsItemSelected(item);
} @Override
public boolean onMenuItemClick(MenuItem arg0) {
Intent intent;
switch (arg0.getItemId()) {
case R.id.actionbar_settings:
intent = new Intent(this, SettingsActivity.class);
startActivity(intent);
break;
case R.id.historyOrder:
intent = new Intent(this, HistoryOrderActivity.class);
startActivity(intent);
break;
case R.id.logout:
AlertDialog.Builder builder = new AlertDialog.Builder(
ShopOrderActivity.this);
builder.setTitle("确定要退出吗?");
builder.setPositiveButton("确定",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
showTip("退出登录!");
}
});
builder.setNegativeButton("取消",
new DialogInterface.OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();
break;
}
return false;
} /**
* 初始化ActionBar
*/
private void initActionBar() {
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle("抢单");
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeButtonEnabled(true);
// actionBar.setIcon(R.drawable.back_menu);
// Drawable background = (Drawable) getResources()
// .getDrawable(R.drawable.top_bg);
// getActionBar().setBackgroundDrawable(background);
setTitleColor(this.getResources().getColor(R.color.green));// 没反应
} /**
* 显示Toast
*
* @param str
*/
public void showTip(final String str) {
runOnUiThread(new Runnable() {
@Override
public void run() {
mToast.setText(str);
mToast.show();
}
});
}
}

id == android.R.id.home

当操作左上角icon图标的时候实现的功能是返回,配置清单须要设置:

<activity

            android:name="com.shop.order.ShopOrderActivity"

            android:launchMode="singleTop"

            android:theme="@style/Theme.AppCompat.Light.DarkActionBar" >

</activity>

actionbar_menu的代码:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" > <item
android:id="@+id/new_order_bar"
android:title="@string/new_order"
android:icon="@drawable/ic_launcher"
app:showAsAction="ifRoom|withText"/> <item
android:id="@+id/actionbar_overflow"
android:icon="@drawable/abc_ic_menu_moreoverflow_normal_holo_dark"
android:title="@string/pop"
app:showAsAction="ifRoom|withText"/>
</menu>

注意:app:showAsAction="ifRoom|withText"假设写成android:showAsAction="ifRoom|withText"则不会在actionbar显示,当操作手机右下角的menu键时才会显示

actionbar_pop的代码:

<?

xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/actionbar_settings"
android:title="@string/settings"/>
<item
android:id="@+id/historyOrder"
android:title="@string/historyorder"/>
<item
android:id="@+id/logout"
android:title="@string/logout"/>
</menu>

分隔操作栏

当应用程序在Android4.0(API级别14)或以上的版本号执行,那么另一种叫做“分隔操作栏”的额外模式对action bar有效。当你启用分隔操作栏模式时。在屏幕的底部会显示一个独立的横条,用于显示Activity在窄屏幕社保上执行时的全部操作项。

要启用分离式操作栏。仅仅需简单的在<application>或<activity>元素中加入uiOptions=”splitActionBarWhenNarrow”属性设置就能够了。

下图中左边是未设置分离式操作栏。右边图是设置了分离式操作栏:


watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZHNjMTE0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="360" height="640" alt="">

android ActionBar的使用的更多相关文章

  1. [Xamarin.Android] ActionBar Tips

    [Xamarin.Android] ActionBar Tips ActionBar用途 快速搞懂 ActionBar的用途,可以参考下列文章: [Android]使用 ActionBarCompat ...

  2. Android ActionBar详解

    Android ActionBar详解 分类: Android2014-04-30 15:23 1094人阅读 评论(0) 收藏 举报 androidActionBar   目录(?)[+]   第4 ...

  3. Android ActionBar(转)

    本文内容 关于 ActionBar 必要条件 项目结构 环境 演示一:Action Bar 显示隐藏 演示二:Action Item 显示菜单选项 演示三:Action Home 启用“返回/向上”程 ...

  4. Android ActionBar应用实战,高仿微信主界面的设计

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/26365683 经过前面两篇文章的学习,我想大家对ActionBar都已经有一个相对 ...

  5. Android ActionBar完全解析,使用官方推荐的最佳导航栏(下) .

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/25466665 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工 ...

  6. Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/18234477 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工 ...

  7. Android ActionBar全然解析,使用官方推荐的最佳导航栏(上)

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/18234477 本篇文章主要内容来自于Android Doc.我翻译之后又做了些加工 ...

  8. Android 原生 Android ActionBar

    本文内容 关于 ActionBar 必要条件 项目结构 环境 演示一:Action Bar 显示隐藏 演示二:Action Item 显示菜单选项 演示三:Action Home 启用"返回 ...

  9. Android Actionbar Tab 导航模式

    Android Actionbar Tab 下图中,红色矩形圈起来的就是我们 ActionBar Tab,下面我们将一步一步的实现下图中的效果. 初次尝试 package com.example.it ...

  10. 【转】Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/18234477 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工 ...

随机推荐

  1. Java 深拷贝和浅拷贝 利用序列化实现深拷贝

    Java 深拷贝和浅拷贝 转自:http://www.cnblogs.com/mengdd/archive/2013/02/20/2917971.html 深拷贝(deep clone)与浅拷贝(sh ...

  2. WebAPI的自动化监控和预警

    Metrics.net + influxdb + grafana 构建WebAPI的自动化监控和预警 前言 这次主要分享通过Metrics.net + influxdb + grafana 构建Web ...

  3. Django关于图片验证码显示笔记

    .访问页面 /login/ - 内部需要创建一张图片,并且给用户返回 - 创建一个白板 Session存放验证码 .POST - 根据用户提交的数据与session里面比较 .登录界面 和 验证码 分 ...

  4. [HNOI2008] GT考试(DP+矩阵快速幂+KMP)

    题目链接:https://www.luogu.org/problemnew/show/P3193#sub 题目描述 阿申准备报名参加 GT 考试,准考证号为 N 位数 X1,X2…Xn(0 <= ...

  5. java 通过httpclient调用https 的webapi

    java如何通过httpclient 调用采用https方式的webapi?如何验证证书.示例:https://devdata.osisoft.com/p...需要通过httpclient调用该接口, ...

  6. PostgreSQL Replication之第八章 与pgbouncer一起工作(4)

    8.4 提升性能 从一开始考虑pgbouncer的时候,性能就是一个关键的因素.为了确保高性能,有些问题必须认真对待.首先,确保参与您设置的所有节点相互之间的距离较近.这对于降低网络往返时间有很多的帮 ...

  7. c# 结构 struct

    结构是使用 struct 关键字定义的,与类相似,都表示可以包含数据成员和函数成员的数据结构. 一般情况下,我们很少使用结构,而且很多人也并不建议使用结构,但作为.NET Framework 一般型別 ...

  8. vue单页面前端做非空校验

    form表单 确定按钮 js部分 确定按钮的方法

  9. 题解 P3605 【[USACO17JAN]Promotion Counting晋升者计数】

    这道题开10倍左右一直MLE+RE,然后尝试着开了20倍就A了...窒息 对于这道题目,我们考虑使用线段树合并来做. 所谓线段树合并,就是把结构相同的线段树上的节点的信息合在一起,合并的方式比较类似左 ...

  10. CJOI 05新年好 (最短路+枚举)

    CJOI 05新年好 (最短路+枚举) 重庆城里有n个车站,m条双向公路连接其中的某些车站.每两个车站最多用一条公路连接,从任何一个车站出发都可以经过一条或者多条公路到达其他车站,但不同的路径需要花费 ...