Android ActionBar入门
来源:互联网 发布:零基础学php要多久 编辑:程序博客网 时间:2024/06/04 19:53
一、Android3.0(API11)版本推出了Action Bar用于规范应用操作。Action Bar会在头部显示如下样式的内容:
重要的操作可以通过图表显示出来,不重要的或者暂时用不到的功能会隐藏起来。Action Bar使用也比较简单。主要是通过自定义/res/menu下的xml文件控制其显示样式。如上图所示样式的xml文件可以写成这样的格式。
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <!-- Search, should appear as action button --> <item android:id="@+id/action_search" android:icon="@drawable/ic_action_search" android:title="@string/action_search" android:showAsAction="ifRoom" /> <!-- Settings, should always be in the overflow --> <item android:id="@+id/action_settings" android:title="@string/action_settings" android:showAsAction="never" /></menu>
其中android:showAsAction是比较重要的一点。它有ifRoom,never,withText,always,collapseActionView参数。ifRoom表示如果头部当前有空间就显示,没有就隐藏。Never表示永远隐藏。在Activity中只需要通过重写onCreateOptionsMenu() 即可。
@Overridepublic boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu items for use in the action bar MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main_activity_actions, menu); return super.onCreateOptionsMenu(menu);}@Overridepublic boolean onOptionsItemSelected(MenuItem item) { // Handle presses on the action bar items switch (item.getItemId()) { case R.id.action_search: openSearch(); return true; case R.id.action_settings: openSettings(); return true; default: return super.onOptionsItemSelected(item); }}
二、Action Bar提供了向上功能,方便用户返回到上一个Activity。只需要在androidmanifes.xml的activity中加入meta-data即可。
然后在Activity的onCreate方法中设置显示向上按钮。
<application ... > ... <!-- The main/home activity (it has no parent activity) --> <activity android:name="com.example.myfirstapp.MainActivity" ...> ... </activity> <!-- A child of the main activity --> <activity android:name="com.example.myfirstapp.DisplayMessageActivity" android:label="@string/title_activity_display_message" > <!-- Parent activity meta-data to support 4.0 and lower --> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.myfirstapp.MainActivity" /> </activity></application>
@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_displaymessage); If your minSdkVersion is 11 or higher, instead use: getActionBar().setDisplayHomeAsUpEnabled(true);}
三、Action Bar的全部功能都要在API 11版本上使用,在低版本上需要通过添加Support Library v7-appname.jar支持。具体的添加方法可以参考这篇文章。V7最低版本支持到API 7。添加好依赖jar后,让使用到Action Bar的Activity继承自ActionBarActivity。
/res/menu下的xml文件也要修改成如下格式:
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:yourapp="http://schemas.android.com/apk/res-auto" > <!-- Search, should appear as action button --> <item android:id="@+id/action_search" android:icon="@drawable/ic_action_search" android:title="@string/action_search" yourapp:showAsAction="ifRoom" /> ...</menu>
Action Bar向上功能也要做出修改。向androidmanifes.xml的activity标签添加android:parentActivityName="要返回到的activity的全路径"。
<application ... > ... <!-- The main/home activity (it has no parent activity) --> <activity android:name="com.example.myfirstapp.MainActivity" ...> ... </activity> <!-- A child of the main activity --> <activity android:name="com.example.myfirstapp.DisplayMessageActivity" android:label="@string/title_activity_display_message" android:parentActivityName="com.example.myfirstapp.MainActivity" > </activity></application>
在对应Activity的onCreate中修改成如下语句:
@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_displaymessage); getSupportActionBar().setDisplayHomeAsUpEnabled(true); // If your minSdkVersion is 11 or higher, instead use: // getActionBar().setDisplayHomeAsUpEnabled(true);}
这样就能够在API 7及以上版本使用ActionBar了
<?xml version="1.0" encoding="utf-8"?> <resources> <!-- the theme applied to the application or activity --> <style name="CustomActionBarTheme" parent="@style/Theme.Holo.Light.DarkActionBar"> <item name="android:actionBarStyle">@style/MyActionBar</item> </style> <!-- ActionBar styles --> <style name="MyActionBar" parent="@style/Widget.Holo.Light.ActionBar.Solid.Inverse"> <item name="android:background">@drawable/actionbar_background</item> </style></resources>
背景可以自定义,ActionBar上的颜色当然也可以了。修改ActionBar上的文字需要重写每个文本元素的titleTextStyle
属性,同时需要指定副主题为TextAppearance.Holo.Widget.ActionBar.Title。
<!-- ActionBar title text --> <style name="MyActionBarTitleText" parent="@style/TextAppearance.Holo.Widget.ActionBar.Title"> <item name="android:textColor">@color/actionbar_text</item> </style>
- Android ActionBar入门
- Android入门--ActionBar的使用
- Android入门之ActionBar实现Tab导航
- Android最新控件ActionBar入门浅析
- ActionBar入门
- Android--ActionBar
- android ActionBar
- Android ActionBar
- android ActionBar
- Android ActionBar
- Android ActionBar
- android actionBar
- Android actionBar
- android - actionbar
- Android ActionBar
- Android ActionBar
- Android ActionBar
- Android ActionBar
- 利用多线程模拟卖票的功能
- 高手速成android开源项目【View篇】
- 在64位Ubuntu下面使用android NDK编译nginx
- 【重点:动态代理】创建一个类MyProxyManger调用getProxy即可以创建一个代理类
- Maven系列之附录A-maven插件配置
- Android ActionBar入门
- 说说Android桌面(Launcher应用)背后的故事(三)——CellLayout的秘密
- Struts2学习(第六篇)——获取servletAPI和封装表单数据
- 哈尔滨理工大学第四届ACM程序设计竞赛F: 背包
- 判断单链表中环的长度等问题
- Codeforces 53A Autocomplete
- 说说Android桌面(Launcher应用)背后的故事(四)——揭秘Workspace
- Aaron Swartz:如何提高效率
- 马云回忆与乔布斯的见面 论创新之必要条件