安卓开发---增加活动按钮

FROM : http://developer.android.com/training/basics/actionbar/adding-buttons.html

活动栏运行你根据APP当前背景情况为最重要的活动条增加活动按钮。活动按钮以图片或文字的实现出现,作为活动按钮。活动不能容纳在活动栏或不够重要而隐藏在活动栏中隐藏。



如上图中,活动栏有一个活动按钮,这个活动按钮具有查找功能,和活动溢出栏,它里面有多个附加的动作。

一 在XML文件中指定活动

所有的活动按钮和活动溢出栏里的其他可见的活动条被定义在一个XML 菜单资源中。增加一个动作到活动栏,创建

一个新的XML文件在工程的res/menu文件夹。

res/menu/main_activity_actions.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>

增加action_search到res/menu/main.xml中


在res/中创建drawable文件夹,增加ic_action_search.png图片,在res/value/strings.xml中增加字符串资源action_search


运行程序,在动作栏右侧多了个图标如下



当活动栏中空间可用时,这个声明查找动作应该作为一个动作按钮出现,而且设置动作应该永远出现在活动溢出位置。默认情况下,所有的动作均在活动溢出部位,但是一个好的经验为每个动作明确声明你的设计意图。

Icon属性为一个图片需要一个资源ID。名字出现在@drawable后面必须是一个位图图片的名字,这个图片你已经保存在res/drawable文件夹中。例如,"@drawable/ic_action_search"关联到ic_action_search.png。同样的,title属性使用一个字符串资源,它被定义在一个XML文件中,位置在res/values/文件夹。

注意:当为你的APP创建按钮和其他位图图片时,你提供多版本是非常重要的。在后面将单独讨论。

如果你的APP使用支持库,showAsAction属性


<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>

二 给活动按钮增加动作

为了把菜单的项放入活动栏,在你的活动里,实现这个onCreateOptionMenu()回调函数,添加菜单资源到菜单对象中。例如:

@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);
}


请注意给活动按钮增加动作后,代码这里有个错误如下:

修改为inflater.inflate(R.menu.main, menu);


三 动作按钮的响应

当用户按下其中一个动作按钮,或另外的动作按钮在隐藏栏里,系统调用你的活动的onOptionItemSelected()回调函数。在你的这个方法的实现里,调用getItemId()函数,给一个MenuItem去确定那个按钮项被按下,返回的ID和你在Item元素中的android: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);
    }
}

增加后如下,注意,在这里增加两个openSearch()和openSettings()后编译有错误,根据提示增加两个方法



四 为底层活动增加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);
}







评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值