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,我翻译之后又做了些加工 ...
随机推荐
- hdu5249 Tricks Device(网络流最大匹配)
分析题意可知: 1.最少须要切断多少边使吴不能找到张(题意吴仅仅能走最短路径上面的边),对从起点到终点的最短路径又一次建图,每条边的权值为1.求最大流就可以 2.在吴能够找到张的前提下,最多能够切断边 ...
- angularjs $http 服务
<!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta http-equiv="C ...
- ACM训练联盟周赛(第一场)
B:Zeratul与Xor 题目描述 Xor(按位异或),对应C++中的“^”运算符. Zeratul给出了一个数列A[n](n≤105),要做q(q≤105)组动作,这些动作包括: 1 a:数列中 ...
- bzoj 1088 [SCOI2005] 扫雷
SCOI2005 扫雷 一道很有趣的(水)题 “这道题有四种解法,你知道么” 给你矩阵的第二列的数字,求出第一列雷有多少种可能的摆法. 不懂扫雷规则的自行按win+R然后输入winmine 思考过后我 ...
- python 异步IO-aiohttp与简单的异步HTTP客户端/服务器
参考链接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143209814 ...
- 一 SSH 无密码登陆 & Linux防火墙 & SELinux关闭
如果系统环境崩溃. 调用/usr/bin/vim /etc/profile SHH无密码登陆 所有要做得节点上运行 修改 host name vi /etc/sysconfig/netwo ...
- 【Cocos2d-x 3.0】游戏开发之win32配置环境搭建project
作者:Senlern 转载请注明,原文链接:http://blog.csdn.net/zhang429350061/article/details/37958275 非常久没有写教程了.如今认为还是要 ...
- Id选择器和Class选择器
http://www.runoob.com/css/css-id-class.html http://www.w3school.com.cn/css/css_syntax_id_selector.as ...
- 2.CString转换到char*
多字节模式下: CString -->char * CString str1 ="; char *t1 =str1.GetBuffer(str1.GetLength()); str1. ...
- beego orm commonDAL通用方法汇总
orm 通用方法——QueryModelById 主键查询 orm 通用方法——GetOneModel 条件查询一个对象 orm 通用方法——QueryModelCount条件查询记录数 orm 通用 ...