- 浏览: 87793 次
- 性别:
- 来自: 北京
最新评论
-
LiuYiJie2007:
public static String getPublicK ...
Android publickey获取 -
LiuYiJie2007:
getPublicKey( )是你自己写法方法 是什么?new ...
Android publickey获取 -
liujia9234:
我试了,不行,最不靠谱了
最靠谱的禁止ViewPager滑动方法 -
kedongjun:
非常强大
关于android通讯录加载大数据的优化问题 -
xunhuan01:
view.getImageMatrix(), savedMat ...
多点触摸放大图片的自定义listener
转载 http://blog.csdn.net/tianjf0514/article/details/13278539
简介
Android3.0才开始支持ActionBar,那么怎么在低版本也能用ActionBar呢?
1、使用Google提供的Support Library(android-support-v7-appcompat)。
2、使用Jake Wharton编写的ActionBarSherlock(http://actionbarsherlock.com/)。
以上两个library的共同点:Android3.0以下,使用library,Android3.0以上,使用系统自带的ActionBar
以上两个library的不同点:android-support-v7-appcompat在Android3.0以下不支持Overflow按钮,如果要使用Overflow按钮,可以使用library里面提供的PopupMenu。从ActionBarSherlock v4.2.0开始在Android3.0以下不支持Overflow按钮,如果要使用Overflow按钮,可以使用ActionBarSherlock v4.1.0,但是新版本有修正的一些bug。
由于两个library的实装方法一样,那么下面就只介绍android-support-v7-appcompat的使用。
android-support-v7-appcompat的使用
1、下载最新的SDK,然后找到里面的sdk\extras\android\support\v7\appcompat导入到eclipse里面。
2、右键里的项目 - Properties - Android - Add - 选择导入的appcompat项目,这样就可以使自己的项目引用appcompat项目。
3、导入之后如果在控制台提示有两个android-support-v4.jar,原因是自己项目中的android-support-v4.jar和导入的appcompat项目的android-support-v4.jar重复了,删掉自己项目中的android-support-v4.jar就OK了。
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
Found 2 versions of android-support-v4.jar in the dependency list,
but not all the versions are identical (check is based on SHA-1 only at this time).
All versions of the libraries must be the same at this time.
Versions found are:
Path: D:\Program Files\adt-bundle-windows-x86_64-20130917\eclipse\workspace\android-support-v7-appcompat\libs\android-support-v4.jar
<pre code_snippet_id="113243" snippet_file_name="blog_20131215_1_6735911" name="code" class="plain"> Length: 556198
SHA-1: 4a6be13368bb64c5a0b0460632d228a1a915f58f
Path: D:\Program Files\adt-bundle-windows-x86_64-20130917\eclipse\workspace\NavigationDrawerDemo(android-support-v7-appcompat)\libs\android-support-v4.jar
Length: 535319
SHA-1: 3e1409c5f5c4cdf9fd41db4b22a3eec5b3b10d96
Jar mismatch! Fix your dependencies</pre>
<pre></pre>
<p></p>
<pre></pre>
4、让Activity继承ActionBarActivity,并在activity标签里面添加主题<activity android:theme="@style/Theme.AppCompat.Light" ... >
5、使用到ActionBar的地方通过getSupportActionBar()方法来获取ActionBar。
6、ActionBar的具体使用方法请参照http://blog.csdn.net/tianjf0514/article/details/13246075,再次就不再多作说明,下面具体说明使用library的一些不同的地方。
Menu的XML文件的写法的不同
[html] view plaincopy在CODE上查看代码片派生到我的代码片
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
yourapp:showAsAction="ifRoom" />
...
</menu>
这是告诉系统,showAsAction使用library的XML attributes。
此外还有
yourapp:actionViewClass="android.support.v7.widget.SearchView"
yourapp:actionProviderClass="android.support.v7.widget.ShareActionProvider"
Up Navigation使用的不同
[html] view plaincopy在CODE上查看代码片派生到我的代码片
<manifest ...>
<activity uiOptions="splitActionBarWhenNarrow" ... >
<meta-data android:name="android.support.UI_OPTIONS"
android:value="splitActionBarWhenNarrow" />
</activity>
</manifest>
android:uiOptions="splitActionBarWhenNarrow"表示使用系统的Up Navigation。
meta-data部分表示使用library的Up Navigation。
自己实现PopupMenu
menu.xml
[html] view plaincopy在CODE上查看代码片派生到我的代码片
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/action_overflow"
android:icon="@drawable/abc_ic_menu_moreoverflow_normal_holo_light"
android:title="@string/action_websearch"
android:titleCondensed="@string/action_websearch"
yourapp:showAsAction="ifRoom|withText"/>
</menu>
popup_menu.xml
[html] view plaincopy在CODE上查看代码片派生到我的代码片
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:icon="@drawable/action_search"
android:title="@string/action_websearch"/>
<item
android:icon="@drawable/action_search"
android:title="@string/action_websearch"/>
</menu>
MainActivity.java
[java] view plaincopy在CODE上查看代码片派生到我的代码片
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_overflow:
if (mPopupMenu == null) {
mPopupMenu = new PopupMenu(this,
findViewById(R.id.action_overflow));
mPopupMenu.inflate(R.menu.popup_menu);
mPopupMenu.setOnMenuItemClickListener(this);
}
mPopupMenu.show();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
自定义主题的不同
由于library会识别系统,OS3.0以上使用系统自带的ActionBar,OS3.0以下使用library的ActionBar。所以主题都要准备两套,一套系统用,一套library用。
比如:
[html] view plaincopy在CODE上查看代码片派生到我的代码片
<!-- ActionBar styles -->
<style name="AppTheme.MyActionBar" parent="@style/Widget.AppCompat.ActionBar.Solid">
<item name="android:background">@drawable/common_title_bg</item>
<item name="android:backgroundSplit">@drawable/common_title_bg</item>
<item name="android:titleTextStyle">@style/AppTheme.MyActionBar.TitleTextStyle</item>
<item name="android:actionOverflowButtonStyle">@style/AppTheme.MyActionBar.actionOverflowButtonStyle</item>
<!-- Support library compatibility -->
<item name="background">@drawable/common_title_bg</item>
<item name="backgroundSplit">@drawable/common_title_bg</item>
<item name="titleTextStyle">@style/AppTheme.MyActionBar.TitleTextStyle</item>
<item name="actionOverflowButtonStyle">@style/AppTheme.MyActionBar.actionOverflowButtonStyle</item>
</style>
当在Android3.0以下版本的手机上运行的时候,会出现以下错误,但是此错误不影响程序运行。
Style contains key with bad entry: 0x01010300
此错误的原因是因为准备了两套自定义主题,给系统用的那套需要在3.0以上的版本运行,所以3.0以下的版本自然没有这些属性,所以就报错了。
解决办法是把给系统用的那套主题移到values-v14里面去就行了。
出现java.lang.ClassNotFoundException异常
检查Project -> Properties -> Java Build Path -> Order & Export -> Android Private Libraries 是否被勾中。
Order and Export有两个属性。调用优先级的问题,越在上边调用优先级越高,例如,在同包同类名的情况下,将优先从上到下执行搜索调用;打勾与不打勾的区别在于导出jar包时是否将这个库的内容也打包到jar中,勾为包含,不勾为不含。
一个使用android-support-v7-appcompat的Navigation Drawer的Demo:http://download.csdn.net/detail/tianjf0514/6462957
简介
Android3.0才开始支持ActionBar,那么怎么在低版本也能用ActionBar呢?
1、使用Google提供的Support Library(android-support-v7-appcompat)。
2、使用Jake Wharton编写的ActionBarSherlock(http://actionbarsherlock.com/)。
以上两个library的共同点:Android3.0以下,使用library,Android3.0以上,使用系统自带的ActionBar
以上两个library的不同点:android-support-v7-appcompat在Android3.0以下不支持Overflow按钮,如果要使用Overflow按钮,可以使用library里面提供的PopupMenu。从ActionBarSherlock v4.2.0开始在Android3.0以下不支持Overflow按钮,如果要使用Overflow按钮,可以使用ActionBarSherlock v4.1.0,但是新版本有修正的一些bug。
由于两个library的实装方法一样,那么下面就只介绍android-support-v7-appcompat的使用。
android-support-v7-appcompat的使用
1、下载最新的SDK,然后找到里面的sdk\extras\android\support\v7\appcompat导入到eclipse里面。
2、右键里的项目 - Properties - Android - Add - 选择导入的appcompat项目,这样就可以使自己的项目引用appcompat项目。
3、导入之后如果在控制台提示有两个android-support-v4.jar,原因是自己项目中的android-support-v4.jar和导入的appcompat项目的android-support-v4.jar重复了,删掉自己项目中的android-support-v4.jar就OK了。
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
Found 2 versions of android-support-v4.jar in the dependency list,
but not all the versions are identical (check is based on SHA-1 only at this time).
All versions of the libraries must be the same at this time.
Versions found are:
Path: D:\Program Files\adt-bundle-windows-x86_64-20130917\eclipse\workspace\android-support-v7-appcompat\libs\android-support-v4.jar
<pre code_snippet_id="113243" snippet_file_name="blog_20131215_1_6735911" name="code" class="plain"> Length: 556198
SHA-1: 4a6be13368bb64c5a0b0460632d228a1a915f58f
Path: D:\Program Files\adt-bundle-windows-x86_64-20130917\eclipse\workspace\NavigationDrawerDemo(android-support-v7-appcompat)\libs\android-support-v4.jar
Length: 535319
SHA-1: 3e1409c5f5c4cdf9fd41db4b22a3eec5b3b10d96
Jar mismatch! Fix your dependencies</pre>
<pre></pre>
<p></p>
<pre></pre>
4、让Activity继承ActionBarActivity,并在activity标签里面添加主题<activity android:theme="@style/Theme.AppCompat.Light" ... >
5、使用到ActionBar的地方通过getSupportActionBar()方法来获取ActionBar。
6、ActionBar的具体使用方法请参照http://blog.csdn.net/tianjf0514/article/details/13246075,再次就不再多作说明,下面具体说明使用library的一些不同的地方。
Menu的XML文件的写法的不同
[html] view plaincopy在CODE上查看代码片派生到我的代码片
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
yourapp:showAsAction="ifRoom" />
...
</menu>
这是告诉系统,showAsAction使用library的XML attributes。
此外还有
yourapp:actionViewClass="android.support.v7.widget.SearchView"
yourapp:actionProviderClass="android.support.v7.widget.ShareActionProvider"
Up Navigation使用的不同
[html] view plaincopy在CODE上查看代码片派生到我的代码片
<manifest ...>
<activity uiOptions="splitActionBarWhenNarrow" ... >
<meta-data android:name="android.support.UI_OPTIONS"
android:value="splitActionBarWhenNarrow" />
</activity>
</manifest>
android:uiOptions="splitActionBarWhenNarrow"表示使用系统的Up Navigation。
meta-data部分表示使用library的Up Navigation。
自己实现PopupMenu
menu.xml
[html] view plaincopy在CODE上查看代码片派生到我的代码片
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/action_overflow"
android:icon="@drawable/abc_ic_menu_moreoverflow_normal_holo_light"
android:title="@string/action_websearch"
android:titleCondensed="@string/action_websearch"
yourapp:showAsAction="ifRoom|withText"/>
</menu>
popup_menu.xml
[html] view plaincopy在CODE上查看代码片派生到我的代码片
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:icon="@drawable/action_search"
android:title="@string/action_websearch"/>
<item
android:icon="@drawable/action_search"
android:title="@string/action_websearch"/>
</menu>
MainActivity.java
[java] view plaincopy在CODE上查看代码片派生到我的代码片
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_overflow:
if (mPopupMenu == null) {
mPopupMenu = new PopupMenu(this,
findViewById(R.id.action_overflow));
mPopupMenu.inflate(R.menu.popup_menu);
mPopupMenu.setOnMenuItemClickListener(this);
}
mPopupMenu.show();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
自定义主题的不同
由于library会识别系统,OS3.0以上使用系统自带的ActionBar,OS3.0以下使用library的ActionBar。所以主题都要准备两套,一套系统用,一套library用。
比如:
[html] view plaincopy在CODE上查看代码片派生到我的代码片
<!-- ActionBar styles -->
<style name="AppTheme.MyActionBar" parent="@style/Widget.AppCompat.ActionBar.Solid">
<item name="android:background">@drawable/common_title_bg</item>
<item name="android:backgroundSplit">@drawable/common_title_bg</item>
<item name="android:titleTextStyle">@style/AppTheme.MyActionBar.TitleTextStyle</item>
<item name="android:actionOverflowButtonStyle">@style/AppTheme.MyActionBar.actionOverflowButtonStyle</item>
<!-- Support library compatibility -->
<item name="background">@drawable/common_title_bg</item>
<item name="backgroundSplit">@drawable/common_title_bg</item>
<item name="titleTextStyle">@style/AppTheme.MyActionBar.TitleTextStyle</item>
<item name="actionOverflowButtonStyle">@style/AppTheme.MyActionBar.actionOverflowButtonStyle</item>
</style>
当在Android3.0以下版本的手机上运行的时候,会出现以下错误,但是此错误不影响程序运行。
Style contains key with bad entry: 0x01010300
此错误的原因是因为准备了两套自定义主题,给系统用的那套需要在3.0以上的版本运行,所以3.0以下的版本自然没有这些属性,所以就报错了。
解决办法是把给系统用的那套主题移到values-v14里面去就行了。
出现java.lang.ClassNotFoundException异常
检查Project -> Properties -> Java Build Path -> Order & Export -> Android Private Libraries 是否被勾中。
Order and Export有两个属性。调用优先级的问题,越在上边调用优先级越高,例如,在同包同类名的情况下,将优先从上到下执行搜索调用;打勾与不打勾的区别在于导出jar包时是否将这个库的内容也打包到jar中,勾为包含,不勾为不含。
一个使用android-support-v7-appcompat的Navigation Drawer的Demo:http://download.csdn.net/detail/tianjf0514/6462957
发表评论
-
如何屏蔽android webview高度选中框
2014-02-19 12:04 746如标题所述,解决方法是在 html的样式中加入 *{-webk ... -
屏蔽ScrollView惯性滚动的方法
2013-08-08 13:36 5712ScrollView中有一种惯性滚动的效果,想让这个Scrol ... -
android 图片LOMO效果
2013-07-25 13:59 871import android.graphics.Bitmap; ... -
GitHub最火的android 项目
2013-07-25 13:14 778GitHub在中国的火爆程度无需多言,越来越多的开源项目迁移到 ... -
listview 点击列表项时,项中的Button会触发点击效果
2013-06-05 19:21 1282开发中,难免会在列表项中, 加入Button ,而button ... -
圆形不滚动的进度条
2013-05-17 11:38 848这种效果的进度条 代码如下: package com. ... -
最靠谱的禁止ViewPager滑动方法
2013-05-15 14:44 4957最近做项目要求某种情况下ViewPager不能滑动,在网上找了 ... -
viewpager主页面响应子页面 onkeydown事件的方法
2013-05-13 19:35 1618大家在开发中不少地方要用到ViewPager这个类,ViewP ... -
Mina 学习笔记 TCP主要接口
2013-05-05 23:21 1224(1.)IoService: 这个接口 ... -
android动画插件器
2013-04-27 10:01 830首先要了解为什么需要插值器,因为在补间动画中,我们一般只定义关 ... -
imageView 的 android:maxHeight,maxWidth属性
2013-03-29 10:17 814大家使用android:maxHeight,maxWidth属 ... -
android中获取下载地址文件的类型的方法
2013-03-28 11:33 1024MimeTypeMap mimeTypeMap = Mime ... -
res与res-auto的区别
2013-03-27 14:55 3960通常我们在布局文件中使用自定义属性的时候 会这样写 xmln ... -
滑动开关控件
2013-03-26 22:39 813public class SlidButton exten ... -
TextView使用SpannableString设置复合文本
2013-03-23 23:35 8791、BackgroundColorSpan 背景色 Sp ... -
Android编程之SparseArray<E>详解
2013-03-21 23:03 984一、构造 从构造方法我 ... -
判断系统是否支持 DownloadManager服务
2013-03-18 14:25 862public static boolean isDownloa ... -
android ndk native_activity.h
2013-03-12 15:25 1767#ifndef ANDROID_NATIVE_ACTIVITY ... -
android ndk obb.h
2013-03-12 15:14 1133#ifndef ANDROID_OBB_H #define A ... -
Android NDK APIs
2013-03-12 14:53 983使用 Android NDK 的一般方法: 1、假如想要使用f ...
相关推荐
总之,“android-actionbar-master.zip”是一个有价值的资源,它可以帮助开发者快速理解和使用Android ActionBar,从而提高开发效率并提升应用的用户体验。通过学习和实践,开发者不仅可以掌握Action Bar的基本用法...
然而,ActionBar自API Level 11(即Android 3.0)开始引入,对于运行更低版本Android系统的设备,原生的ActionBar并不支持。为了在Android 2.1(API Level 7)及以上版本实现ActionBar的功能,开发者通常会借助于`...
"android_UITest.zip" 文件集合显然关注于如何通过ActionBar与ViewPager来构建一个可点击、可滑动的导航系统,同时实现多界面布局。让我们深入探讨这些知识点。 首先,`ActionBar` 是Android SDK提供的一种用于展示...
在android3.0版本之前使用ActionBar,出现了很多问题,比如overflow出不来,菜单项显示只有文字没有图标等,本例子解决了这些问题,在android2.3和android4.0测试通过
7. **解决兼容性问题**:如果你需要支持更低版本的Android系统,可以使用`Android Support Library`或者`AndroidX`库中的`AppCompatActivity`和`Toolbar`。 通过以上步骤,你可以在`Android Studio`环境下成功地...
对于支持更低版本的Android系统,可以使用ActionBar Sherlock库,这是一个开源库,它可以让你在Android 2.1(API级别7)及以上版本的设备上使用ActionBar。 4. **源码分析** `ActionBarDemo`项目中应该包含了实现...
在低版本系统中,我们可以通过使用`android.support.v7.app.ActionBar`库来实现兼容性。 1. 添加Support Library 要使用`android.support.v7.app.ActionBar`,首先需要在项目构建文件(build.gradle)中添加依赖: ...
为了确保应用的界面一致性与用户体验,开发者需要采取一些措施来实现对低版本Android的Action Bar兼容。 本文将详细介绍如何在Android 3.0以下版本中实现Action Bar的兼容性,并涉及Action Bar中的Tab功能。 首先...
本文将详细介绍如何在Android项目中创建并使用自定义的Action Bar。 首先,我们需要了解Action Bar的基本构成。通常,Action Bar包括以下几个部分: 1. 应用图标:位于左上角,作为应用的标识。 2. 标题:显示当前...
android:background="@color/your_actionbar_color"> android:id="@+id/action_bar_icon" android:layout_width="wrap_content" android:layout_height="match_parent" android:src="@drawable/your_icon" ...
10. **Android Support Library**:由于Android设备的碎片化,为了兼容低版本系统,我们需要使用Android Support Library中的`android.support.v7.app.ActionBar`。 在学习和实践这个示例源码时,建议逐步分析每个...
在Android 4.0(API级别14)之后,ActionBar成为了Android Design Support Library的一部分,使得开发者可以方便地在更低版本的Android系统上使用它。 在ActionBar中添加下拉菜单,通常有两种方式:使用Spinner或...
当此应用在运行 Android 3.0 或更高版本的设备上时,其 Activity 将使用“Holographic”主题,从而包含 ActionBar。 - **取消 ActionBar**: - **通过 Theme 设置**:可以通过设置 Activity 的主题为 `Theme.Holo....
本项目“Android_Menu.rar”聚焦于Android系统中如何创建和使用简单的菜单功能,适用于初学者理解并掌握这一核心技能。 在Android中,菜单主要用于在特定场景下显示额外的功能选项,比如在活动(Activity)的顶部...
5. **使用ActionBar Sherlock**:如果你需要兼容更低版本的Android,可以使用ActionBar Sherlock库。它提供了与原生ActionBar类似的接口和功能,但同时也支持Android 2.1及以上的版本。 6. **Action Bar和...
- 使用ActionBar Sherlock库:对于兼容低版本Android,可能使用了ActionBar Sherlock库,这是一个第三方库,使得在API 7及更高版本上也能使用ActionBar。 5. **学习资源**:为了深入理解并使用这个实例,建议阅读...
源代码文件"UI_01_Android_ActionBar_Blog"很可能是博主对这些概念的实践示例,包含了如何在项目中实现和自定义ActionBar的步骤。你可以通过阅读这些代码,了解具体的实现细节,例如如何创建菜单资源文件,如何在...
1. 使用SherlockActionBar库:ActionBar Sherlock(ABS)是一个兼容库,允许在Android 2.x版本上使用ActionBar。只需在项目中添加ABS依赖,然后像在高版本中一样使用ActionBar。 2. AppCompat库:Google推出的v7 ...
- 对于API级别较低的设备,需要使用`android.app.ActionBar`而不是`android.support.v7.app.ActionBar`。 - 使用`Theme.AppCompat`系列的主题,以确保在不同版本的Android上都能正确显示。 7. **组件库component-...
在Android API Level 11及以上版本,你可以直接使用ActionBar,而对于低版本,可以通过使用Android Support Library来支持。 自定义ActionBar主要有以下几种方法: 1. **使用Theme**: 在AndroidManifest.xml中为...