ActionBar在Android2.x的实现,类似新版微信界面。
ActionBar完美兼容Android4.x的机型,虽然现在Android2.x的系统越来越少,还有有一部分人使用的仍是2.x的系统,所以我们还得考虑着兼容性问题。
对比图:
Test例子与微信的对比,测试机型SONY XPERA Mt27i Android2.3.7
在Android官网中我们可以看到有这样一个更新包,android-support-v7,这个包就是专门解决ActionBar的向下兼容性问题。
第一步:在 \extras\android\support 这个目录下面有v7这个包(当然你必须把自己的SDK更新到最新),打开找到appcompat这个项目,作为Android项目导入Eclipse,并勾选Is Libary.
第二步:新建一个Android项目,设置 <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" />,在AndroidManifest中给声明过的Activity加 android:theme="@style/Theme.AppCompat.Light" 这样一个属性(否则会报错)。
第三步:把Libary加入新建的项目中去,如图
第四步:让主Activity继承ActionBarActivity(import android.support.v7.app.ActionBarActivity),实现ActionBar有点不同,如下:
actionBar = getSupportActionBar();
第五步:ActionBar上添加控件,在menu目录中,添加红色字体为你的项目名称 xmlns:TabsWithSwipeGesture="http://schemas.android.com/apk/res-auto" ,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <menu xmlns:android= "http://schemas.android.com/apk/res/android" xmlns:TabsWithSwipeGesture= "http://schemas.android.com/apk/res-auto" > <item android:id= "@+id/action_settings" android:orderInCategory= "100" TabsWithSwipeGesture:showAsAction= "ifRoom" TabsWithSwipeGesture:actionViewClass= "android.support.v7.widget.SearchView" /> <item android:id= "@+id/action_test1" android:orderInCategory= "100" TabsWithSwipeGesture:showAsAction= "ifRoom" android:title= "测试1" /> <item android:id= "@+id/action_test2" android:orderInCategory= "100" TabsWithSwipeGesture:showAsAction= "ifRoom" android:title= "测试2" /> </menu> |
把showAsAction前面的android:替换成当前的项目名称,actionViewClass也引用support-v7中的。
第六步:实现Search
1 2 3 4 | SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); getMenuInflater().inflate(R.menu.main, menu); MenuItem searchItem = menu.findItem(R.id.action_settings); SearchView searchview = (SearchView)MenuItemCompat.getActionView(searchItem); |
未完·········待续···············
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步