Android_ActionBar
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);//在activity title栏的左侧开启一个<按钮,
// 然后在onOptionsItemSelected(MenuItem menuItem) 里面使用menuItem.getItenmId()判断id是否为android.R.id.home,如果是则finish掉当前的activity
/**
* 让overflow显示在activity onCreate()里面调用
*/
private void setOverflowShowingAlways() {
try {
ViewConfiguration config = ViewConfiguration.get(this);
Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
menuKeyField.setAccessible(true);
menuKeyField.setBoolean(config, false);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 设置actionBar可以显示图标
*/
@Override
public boolean onMenuOpened(int featureId, Menu menu) {
if (featureId == Window.FEATURE_ACTION_BAR && menu != null) {
if (menu.getClass().getSimpleName().equals("MenuBuilder")) {
try {
Method m = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);
m.setAccessible(true);
m.invoke(menu, true);
} catch (Exception e) {
}
}
}
return super.onMenuOpened(featureId, menu);
}
| never | 表示显示在溢出菜单中显示,溢出菜单就三个口竖屏显示的那个。 |
| ifRoom | 表示在显示4个或者是4个以上的item的时候会隐藏到溢出菜单里。还有如果界面显示不了了也会在溢出菜单里面显示。 |
| collapseActionView | 表示当前的item可以进行合并,他一般都是和ifRoom配合使用,像我们看到的微信的搜索item就是这个原理做的。 |
| always | 表示一直在bar上面显示,不管是什么情况下。都显示。不会显示到溢出菜单里面。 |
| withText | 表示会显示文字。。在溢出菜单里面显示。。 |
android:actionViewClass 这个属性就是可以设置一个view在item里面显示。例如搜索view,android.widget.SerachView
android:actionProviderClass 这个属性就可以设置一个provider在item里面显示,例如自定义的provider,com.xxx.SubMenuProvider。自定义的provider里面可以添加子menu.效果类似于微信里面的一个+号点击以后会弹出一些列子菜单。
android:actionLayout 这个属性就可以设置一个布局文件放到item里面显示。
android:orderInCetegory 这个属性就是传入一个整数类型,传入的值越大优先级越低,越容易在溢出菜单里面显示。
import android.content.Context;
import android.util.Log;
import android.view.ActionProvider;
import android.view.MenuItem;
import android.view.MenuItem.OnMenuItemClickListener;
import android.view.SubMenu;
import android.view.View; /**
* 为了表示这个Action Provider是有子菜单的,需要重写hasSubMenu()方法并返回true,然后在onPrepareSubMenu通过调用SubMenu的add()方法添加子菜单。
* @author kchang
* @E-mail:kchang244@163.com
*/
public class MyActionProvider extends ActionProvider {
private static final String TAG = MyActionProvider.class.getSimpleName();
public MyActionProvider(Context context) {
super(context);
}
@Override
public View onCreateActionView() {
return null;
} @Override
public void onPrepareSubMenu(SubMenu subMenu) {
subMenu.clear();
subMenu.add("Sub Menu A").setIcon(R.drawable.call).setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
Log.d(TAG, "onMenuItemClick() Sub Menu A");
return true;
}
});
subMenu.add("Sub Menu B").setIcon(R.drawable.chat).setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
Log.d(TAG, "onMenuItemClick() Sub Menu B");
return true;
}
});
super.onPrepareSubMenu(subMenu);
} @Override
public boolean hasSubMenu() {
return true;
}
}
ActionBar大概就用到这些,如果要用actionBar.Tab那个也很容易不过不是很好用,tab+viewPager
Android_ActionBar的更多相关文章
随机推荐
- python编码(三)
python 有str object 和 unicode object 两种字符串,都可以存放字符的字节编码,但是他们是不同的type,这一点很重要,也是为什么会有encode(编码)和decode( ...
- linux上安装jdk1.8
开发环境centos7, jdk1.8 首先去官网下载jdk1.8的linux64位安装包 进入目录/usr/local/mypackage/java 利用winscp上传jdk安装包 命令tar - ...
- Bluebird-NodeJs的Promise
Promise是异步代码实现控制流的一种方式.这一方式可以让你的代码干净.可读并且健壮. 比如,你用来异步处理文件事件的回调代码: fs.readFile('directory/file-to-rea ...
- ios判断设备是iphone还是ipad
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launc ...
- 一起学习MVC(3)Views的学习
_ViewStart.cshtml._Layout.cshtml.Index.cshtml三个页面加载时候的先后顺序就是: _Layout.cshtml ViewStart.cshtml ...
- 在每页(分页)报表中重复显示标题 - SQL Server Reporting Service (SSRS)
问题描述 TFS系统提供多种报表,有图表(Chart).Web面板(Dashboard).SharePoint面板.Excel报表,SQL Server Reporting Serivce(SSRS) ...
- c# .net中的简单Job
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 基于MVC框架Aspose.Words打印到Word中写法
控件bin文件下载地址:https://download.csdn.net/download/u012949335/10610726 //前端打印写法 @{ ViewBag.Title = " ...
- SharePoint列表数据清除
--获取站点对象 $spWeb =get-spweb http://123.sinochem.com --获取具体列表对象 $spList =$spWeb.GetListFromUrl("h ...
- 【转】SQL FOR XML简介及用法
摘要:sql中的for xml语法为表转化为xml提供了很好的支持,当然使用同样的程序语言也能够达到同样的效果,但是有了for xml将使得这一切更加的方便. 主要内容: Select 的查询结果会作 ...