The action bar allows you to add buttons for the most important action items relating to the app's current context. Those
that appear directly in the action bar with an icon and/or text are known asaction buttons.
Actions that can't fit in the action bar or aren't important enough are hidden in the action overflow.
ActionBar允许你去添加非常重要的action菜单连接到应用的上下文,ActionBar中可以添加一个图标或者文本的按钮。Actions如果在ActionBar中放置不下则会隐藏。
Specify the Actions in XML
定义Actions在XML中
All action buttons and other items available in the action overflow are defined in an XMLmenu resource.
To add actions to the action bar, create a new XML file in your project'sres/menu/
directory.
Add an<item>
element for each item you want to include in the action bar. For example:
所有的按钮或者被隐藏的可被操作view都在菜单资源XML文件中定义,下面在你的工程的res/menu/directory下创建一个XML文件,
给actionBar添加action
添加方法如下:
<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>
This declares that the Search action should appear as an action button when room is available in the action bar, but the Settings
action should always appear in the overflow. (By default, all actions appear in the overflow, but it's good practice to explicitly declare your design intentions for each action.)如果ActionBar的显示空间足够大,查询action就应该显示并可见,但是设置action应该总是隐藏的(默认,所有的action都是隐藏的,但是最好是明确你的每个aciton的设计意图)
Theicon
attribute
requires a resource ID for an image. The name that follows@drawable/
must
be the name of a bitmap image you've saved in your project'sres/drawable/
directory.
For example,"@drawable/ic_action_search"
refers
toic_action_search.png
.
Likewise, thetitle
attribute
uses a string resource that's defined by an XML file in your project'sres/values/
directory,
as discussed inBuilding
a Simple User Interface.
icon属性需要指定一个图片资源ID,在@drawable/路径后的资源名必须是你已经在你工程res/drawable/目录下存在的图片名称。例如,“@drawable/ic_action_search"映射到资源ic_action_search.png.同样的,title属性必须使用res/values/目录下XML文件中定义好的string字符串,就如刚说的这样,来创建一个简单的界面。
If
your app is using the Support Libraryfor compatibility on versions as low as Android 2.1, theshowAsAction
attribute
is not available from theandroid:
namespace.
Instead this attribute is provided by the Support Library and you must define your own XML namespace and use that namespace as the attribute prefix. (A custom XML namespace should be based on your app name, but it can be any name you want and is only accessible
within the scope of the file in which you declare it.) For example:
如果你用的类库兼容Android2.1以下版本,那么Android命名空间下的showAsAction属性没有用,为了代替库文件提供的这个属性你必须定义你自己的XML命名空间并使用这个命名空间作为属性的前缀。(一个自定义的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>
Add the Actions to the Action Bar
给ActionBar添加Action
To
place the menu items into the action bar, implement theonCreateOptionsMenu()
callback
method in your activity to inflate the menu resource into the givenMenu
object.
For example:
将菜单项添加到你的action bar,在你的activity中实现onCreateOptionsMenu()回调方法去映射菜单资源到指定的菜单项,例如:
@Override
public 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);
}
Respond to Action Buttons
Action 按钮监听回调
When the user
presses one of the action buttons or another item in the action overflow, the system calls your activity'sonOptionsItemSelected()
callback
method. In your implementation of this method, callgetItemId()
on
the givenMenuItem
to
determine which item was pressed—the returned ID matches the value you declared in the corresponding<item>
element'sandroid:id
attribute.
当用户按下一个action按钮或者隐藏的其他菜单,系统将自动回调你的activity中的onOptionsItemSelected()方法。在你的方法实现中,调用getItemId()去得到相应的元素ID.
@Override
public 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);
}
}
Add Up Button for Low-level Activities
给低优先级的Acitivity添加Up按钮
All screens in your app that are not the main entrance to your app (activities that are not the "home" screen) should offer the user a way to navigate to the logical parent screen in the app's hierarchy by pressing theUpbutton in the action bar.
When running on Android 4.1 (API level 16) or higher, or when usingActionBarActivity
from
the Support Library, performingUpnavigation simply requires that you declare the parent activity in the manifest file and enable theUpbutton for the action bar.
For example, here's how you can declare an activity's parent in the manifest:
在你的应用中不是所有的界面都是主界面,通过按下ActionBar中的Up按钮,应该提供给用户一个父视图。
当运行在Android4.1或者更高版本,或者添加高版本类库,提供顶部导航需要在mainfest文件中声明父activity.
例如,在mainfest中如何声明:
<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" >
<!-- 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>
Then enable the app icon as theUpbutton
by callingsetDisplayHomeAsUpEnabled()
:然后通过调用setDisplayHomeAsUpEnable()是Up图标生效。
@Override
public 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);
}
Because the system now knowsMainActivity
is
the parent activity forDisplayMessageActivity
,
when the user presses theUpbutton,
the system navigates to the parent activity as appropriate—youdo notneed
to handle theUpbutton's
event.
分享到:
相关推荐
Android 弹无虚发之第一弹:Android 2.X平台完美兼容ActionBar以及Actionbar的常用攻略 详细介绍请参考博客:http://blog.csdn.net/xy_nyle/article/details/17799753
本集只有一个主角ActionBar,我们也将ActionBar作为漫漫androidUI组件学习的最后一站,一般情况下,最后一站疯兄都会刻意安排的轻松一些,让大家能够在激情中开始,在快乐中结束,也是对我们能够坚持到底的一种馈赠...
带有传统标题栏 ActionBar 标题居中 的TitleActivity
① 作为“action选项”,在ActionBar上直接显示“选项菜单”(OptionsMenu)—— 为用户进行某项操作提供直接的访问; 作为“action项”没有出现在ActionBar上得菜单项会被置于“更多...”菜单项 中,在...
Android自定义ActionBar,常用的样式
Android ActionBar自定义布局
【Android进阶】(5)ActionBar详解源代码
android actionbar的简单实例 带返回按钮
android 3.0以下兼容actionbar例子,包括actionbar的tab
自定义actionbar,定义一个actionbar模板,以便在程序中所有的activity中都能引用
Google官方在android-support-v7包中添加了ActionBar,开始让2.1以后的版本支持ActionBar,此demo展现了它的简单使用!
android actionBar PPT
此示例作为csdn博客(Android Studio环境下ActionBar的使用教程以及如何解决遇到的问题)的测试Demo,仅供参考
Android ActionBar 使用示例
在android3.0版本之前使用ActionBar,出现了很多问题,比如overflow出不来,菜单项显示只有文字没有图标等,本例子解决了这些问题,在android2.3和android4.0测试通过
android的actionbar开发,以及使用radio button代替Tab
ActionBar的引入方式: ...为了兼容Android3.0之前的低版本,actionbar通常通过extends集成Support包下的AppCompatActivity实现,同时需要使用Theme.AppCompat的ActionBar主题(想要去掉ActionBar使用Theme.AppCompa
android4.0使用的新技术!能自定义主题栏;使用十分方便;欢迎大家下载
Android之ActionBar 简单的实现ActionBar
仿百度手机助手android端推荐界面实现上滑actionbar颜色变化及背景颜色变化继承了slibingTab与Viewpager.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。