标签:
标题栏menu就是指下图中红框里面的菜单按钮。
标题栏上所有的按钮或者其他元素都定义在xml文件里面,这些文件资源称为menu resource。要在标题栏添加按钮,需要在项目的/res/menu/路径下创建xml文件。
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:context="com.lidi.helloworld.MainActivity" > <item android:id="@+id/action_settings" android:icon="@drawable/ic_launcher" android:orderInCategory="100" android:showAsAction="ifRoom" android:title="@string/action_settings"/> </menu>
--------------------------------------------------------下面是上面的代码的一些解释,可以跳过----------------------------------------------------------
ifRoom | 剩余空间足够时才显示,不够时将隐藏在溢出列表中 |
never | 从不在标题栏显示,隐藏在溢出列表中并且显示时只显示文本,所以定义item的时候最好带上android:title属性。 |
always | 无论是否溢出,总会显示。 |
withText | 图标和文本同时在标题栏显示,空间不足时文本可能显示不全。 |
collapseActionView | 同一menu下其它按钮折叠到这个按钮上,用户点击这个时所有按钮才展开。(我是这么理解的,具体是不是没试过o(╯□╰)o)。 |
android:title="@string/action_settings" 设置按钮的文本。
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:helloworld="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"
helloworld:showAsAction="ifRoom" /> ... </menu>
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu items for use in the action bar MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main, menu); return super.onCreateOptionsMenu(menu); }
然后给按钮添加功能。用户点击item的时候,系统会调用该Activity的onOptionsItemSelected函数,所以我接下来要实现这个函数来给按钮添加功能。这个函数需要判断用户点击了哪个按钮,我们可以用getItemId()函数来获取被点击的item的id,并根据id的不同执行不同的命令。onOptionsItemSelected函数代码如下:
@Override public boolean onOptionsItemSelected(MenuItem item) { // Handle presses on the action bar items switch (item.getItemId()) { case R.id.action_settings: //省略执行功能的代码 return true; default: return super.onOptionsItemSelected(item); } }
由于我只添加了一个item,其id是action_settings,所以我这里只写一个case,如果有多个item,就得写多个case,比如假如我有在main.xml里面添加了一个item,设置其id为action_search,我就需要在上面的switch块里面添加下面这样一个case:
case R.id.action_search: //省去执行功能的代码 return true;
到这里,给标题栏添加按钮,并给按钮添加点击事件就完成了。
标签:
原文地址:http://www.cnblogs.com/dige1993/p/4864877.html