当需要在 android 7或更高的版本使用 ActionBar,则可以通过继承ActionBarActivity来实现,
网上有一个开源项目来兼容老版本显示ActionBar的效果:ActionBarSherlock。
使用android.support.v7 来实现ActionBar感觉会更简单一些。
android.support.v7 有三个jar文件可供使用,对于ActionBar我们需要使用android-support-v7-appcompat.jar
路径:...\sdk\extras\android\support\v7\appcompat\libs
但是直接把这个jar 导入项目是不可以使用的,具体的步骤:
1. 把appcompat 工程导入eclipse [appcompat是一个 library project] ,路径:...\sdk\extras\android\support\v7\appcompat\
导入之后的项目:
2.导入appcompat工程的时候,记得要 Copy projects into workspace
3.创建你自己的工程,如myDemo,右键单击该工程,选择Properties
在弹出的对话框中,选择Android选项卡,然后点击Add按钮,添加appcompat工程。
4、然后 OK 就可以了,我们的工程就引用了 support V7库工程了。
在manifest文件中,为你使用了ActionBar的actitity添加theme属性,这个theme必须是 @style/Theme.AppCompat 或它的子类
如:
5.在res/menu目录下,修改Menu对应的xml文件:
- <menu xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:alpha="http://schemas.android.com/apk/res-auto" >
- <item
- android:id="@+id/action_settings"
- android:orderInCategory="100"
- android:icon="@drawable/ic_launcher"
- alpha:showAsAction="ifRoom|withText"
- android:title="@string/action_settings"/>
- </menu>
需要注意的是:
xmlns:alpha="http://schemas.android.com/apk/res-auto" 和 alpha:showAsAction="ifRoom|withText"
他们的 alpha 要一致哦,相当于自定义一个命名空间,名字可以随意,但要一致。
感觉这样的含义:如果直接使用android:showAsAction,但对于早期的版本来说android命名空间下不存在这个属性,就不能看到ActionBar的效果,而这个属性的定义存在于support V7 里面,所以可以兼容之前的版本。
6.继承 ActionBarActivity 处理ActionBar
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onOptionsItemSelected(MenuItem menu) {
if (menu.getTitle() == "No.1"){
Toast.makeText(getApplicationContext(), "You clicked first button.", Toast.LENGTH_SHORT).show();
}
if (menu.getTitle() == "No.2"){
Toast.makeText(getApplicationContext(), "You clicked second button.", Toast.LENGTH_SHORT).show();
}
if (menu.getTitle() == "No.3"){
Toast.makeText(getApplicationContext(), "You clicked third button.", Toast.LENGTH_SHORT).show();
}
return super.onOptionsItemSelected(menu);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuItemCompat.setShowAsAction(
menu
.add("No.1")
.setIcon(android.R.drawable.ic_menu_rotate),
MenuItemCompat.SHOW_AS_ACTION_IF_ROOM);
MenuItemCompat.setShowAsAction(
menu
.add("No.2")
.setIcon(android.R.drawable.ic_menu_compass),
MenuItemCompat.SHOW_AS_ACTION_IF_ROOM);
MenuItemCompat.setShowAsAction(
menu
.add("No.3")
.setIcon(android.R.drawable.ic_menu_more),
MenuItemCompat.SHOW_AS_ACTION_IF_ROOM);
return true;
}
}
相关推荐
ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,...能够让开发者轻松开发一款带动作栏(Actionbar)的应用,并且适用于Android 2.x及其以上所有版本。
ActionBarSherlock-master.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
ActionBarSherlock-4.4.0.zip
Android 弹无虚发之第一弹:Android 2.X平台完美兼容ActionBar以及Actionbar的常用攻略 详细介绍请参考博客:http://blog.csdn.net/xy_nyle/article/details/17799753
ActionBarSherlock-master.zip
在android3.0版本之前使用ActionBar,出现了很多问题,比如overflow出不来,菜单项显示只有文字没有图标等,本例子解决了这些问题,在android2.3和android4.0测试通过
Android控件ActionBar浅析及适配2.x的方法介绍
android-actionbar-for-2.x.x.7z
ActionBar在Android2.x的实现,类似新版微信界面
ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就...能够让开发者轻松开发一款带动作栏(Actionbar)的应用,并且适用于Android 2.x及其以上所有版本。
这是在android 2.x版本中实现ActionBar和PopupMenu效果的Demo,其中使用了Android-support-v7中的类,实现overflow的下拉菜单和PopupMenu效果
ActionBarDemo actionBar的教程 1.获得ActionBar | // 获得ActionBar ActionBar actionBar = getSupportActionBar(); 2.显示/隐藏ActionBar | //显示ActionBar ...actionBar.setDisplayHomeAsUpEn
网上一大堆的v7介绍导入方法,始终没有提到一个问题,就是 v7要求设置 android 4.0以上,并且引用的项目也要设为 4.0以上,这样 v7包不会有错,项目也正常引用,设置 4.0,在android 2.x的机器上是最样正常跑的,因为...
ActionBarSherlock框架
actionbarsherlock 支持老版本使用actionbar
android 3.0以下兼容actionbar例子,包括actionbar的tab
对于已经被不大好用的...相比Actionbar Toolbar最明显的一点就是变得很自由,可随处放置,具体的使用方法和Actionbar很类似.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
在Actionbar添加menuitem,搜索、分享和其他普通item2.Actionbar的导航功能,通过配置manifest和代码实现3.添加Tab页(已过时)4.添加自定义的按钮,类似微信选择头像的“使用”按钮5.下拉列表(已过时)6.Actionbar...
实现了ActionBar自定义样式效果,项目内含:源码+ 效果图+项目结构图 教程地址:http://blog.csdn.net/yangyu20121224/article/details/9087941