您的位置:首页 > 移动开发 > Android开发

android 使用android.support.v7 添加ActionBar

2013-11-04 13:28 330 查看
当需要在 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工程。



然后 OK 就可以了,我们的工程就引用了 support V7库工程了。

4.在manifest文件中,为你使用了ActionBar的actitity添加theme属性,这个theme必须是 @style/Theme.AppCompat 或它的子类

如:



5.在res/menu目录下,修改Menu对应的xml文件:

[html] view plaincopy

<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

[java] view plaincopy

import android.os.Bundle;

import android.support.v7.app.ActionBarActivity;

import android.view.Menu;

public class MainActivity extends ActionBarActivity{

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: