android 使用android.support.v7 添加ActionBar
2016-04-06 17:04
477 查看
当需要在 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;
}
}
网上有一个开源项目来兼容老版本显示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;
}
}
相关文章推荐
- AsyncTask异步处理学习总结
- Android WebView的Js对象注入漏洞解决方案
- sharedSDK 集成感想
- android 进阶之注解框架搭建
- android TextView、Button和ImageView阴影
- Android设置头像,手机拍照或从本地相册选取图片作为头像
- Android热补丁动态修复技术(一):从Dex分包原理到热补丁
- Android Studio的国际化
- android Service传值
- ANDROID L——Material Design详解(主题和布局)
- android自定义圆盘时钟
- Android Studio导入jar包和删除jar包
- android——ImageLoader添加缓存
- android gradle
- Android 使用系统相机拍摄照片保存到本地并在系统相册中显示
- Android Studio项目目录结构介绍
- Android下常用的图像处理程序(灰度化、线性灰度变化、二值化)
- Android上传图片之调用系统拍照和从相册选择图片
- Android中使用Bundle交换数据
- 如何用Android开发工具引用百度地图