android ActionBar的使用
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的使用的更多相关文章
- [Xamarin.Android] ActionBar Tips
[Xamarin.Android] ActionBar Tips ActionBar用途 快速搞懂 ActionBar的用途,可以参考下列文章: [Android]使用 ActionBarCompat ...
- Android ActionBar详解
Android ActionBar详解 分类: Android2014-04-30 15:23 1094人阅读 评论(0) 收藏 举报 androidActionBar 目录(?)[+] 第4 ...
- Android ActionBar(转)
本文内容 关于 ActionBar 必要条件 项目结构 环境 演示一:Action Bar 显示隐藏 演示二:Action Item 显示菜单选项 演示三:Action Home 启用“返回/向上”程 ...
- Android ActionBar应用实战,高仿微信主界面的设计
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/26365683 经过前面两篇文章的学习,我想大家对ActionBar都已经有一个相对 ...
- Android ActionBar完全解析,使用官方推荐的最佳导航栏(下) .
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/25466665 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工 ...
- Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/18234477 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工 ...
- Android ActionBar全然解析,使用官方推荐的最佳导航栏(上)
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/18234477 本篇文章主要内容来自于Android Doc.我翻译之后又做了些加工 ...
- Android 原生 Android ActionBar
本文内容 关于 ActionBar 必要条件 项目结构 环境 演示一:Action Bar 显示隐藏 演示二:Action Item 显示菜单选项 演示三:Action Home 启用"返回 ...
- Android Actionbar Tab 导航模式
Android Actionbar Tab 下图中,红色矩形圈起来的就是我们 ActionBar Tab,下面我们将一步一步的实现下图中的效果. 初次尝试 package com.example.it ...
- 【转】Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/18234477 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工 ...
随机推荐
- less04 运算符、命名空间
less //.wp{ // margin: 0 auto; // background: forestgreen; // width: 450px + 450; //有一个有单位就可以 // hei ...
- rest_framework 分页三种
.分页 a. 分页 看第n页 每页显示n条数据: b. 分页 在某个位置 向后查看多少条数据 c. 加密分页 上一页和下一页 本质:查看 记住页码id的最大值和最小值 通过其来准确扫描 过去的话 会从 ...
- django 笔记15 ajax系列
参考 http://www.cnblogs.com/wupeiqi/articles/5703697.html # 原生操作# jQuery操作# 伪Ajax操作# XMLHttpReques 伪aj ...
- BZOJ 3143 高斯消元+贪心....
思路: 先算一下每条边经过次数的期望 转化为每个点经过次数的期望 边的期望=端点的期望/度数 统计一下度数 然后高斯消元 贪心附边权--. //By SiriusRen #include <cm ...
- spring-data-redis 使用过程中需要注意的地方
1.序列化问题 <!-- SDR默认采用的序列化策略有两种,一种是String的序列化策略,一种是JDK的序列化策略. StringRedisTemplate默认采用的是String的序列化策略 ...
- tnsnames.ora文件说明
目录位置 unix:$ORACLE_HOME/network/admin WINDOW:%ORACLE_HOME%\network\admin 设置相应的环境变量:TNS_ADMIN tnsname. ...
- asp.net 项目发布注意点
在修改了某些代码后,要发布到服务器 这时候 ,在本地发布完把对应的文件复制到服务器上覆盖即可. 1.如果修改的是.cs .asmx等文件,则需要覆盖其对应项目名称的.dll文件 2.如果修改的是.h ...
- PostgreSQL Replication之第五章 设置同步复制(2)
5.2 理解实际影响和性能 在本章中,我们已经讨论了实际影响以及性能影响.但是,有什么好的理论性的例子吗?让我们做一个简单的基准测试,看看复制是怎么做的.我们做这样的测试来为您显示各种耐久性的级别不只 ...
- 判断页面是否被嵌入iframe里面
最近在做一个项目,是一个小型的后台管理系统,这个系统可以单独打开,也可以嵌入公司大型的后台管理项目里面 这样就存在一个问题,在被嵌入大的后台管理系统后,不用显示该页面顶部导航栏和左侧的菜单栏 所以我们 ...
- UVA-11134 Fabled Rooks 贪心问题(区间贪心)
题目链接:https://cn.vjudge.net/problem/UVA-11134 题意 在 n*n 的棋盘上,放上 n 个车(ju).使得这 n 个车互相不攻击,即任意两个车不在同一行.同一列 ...