新手安卓学习笔记【二】应用程序按钮菜单实现

摘要

常见的应用中应用头部都会出现标题、返回和一些自定义菜单,这些上部的菜单方便用户点击,合理运用可以提升一定的用户体验。

菜单配置

当控制器activity对窗体进行创建之时需要告知窗体,这个控制器有特定的菜单按钮需要设置。

onCreateOptionsMenu

   public boolean onCreateOptionsMenu(Menu menu) {
       getMenuInflater().inflate(R.menu.first_menu,menu);
       return true;
   }

在这里我们需要一个可以配置菜单的试图配置XML文件。

在项目res文件夹下创建 AndroidResourceDirectory,选择menu,并在menu下创建一个 menu resource file 如下

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/menu_first"
        android:icon="@android:drawable/ic_menu_add"
        android:title="@string/menu_name"
        app:showAsAction="ifRoom"
        ></item>
</menu>

效果初现
下图中的 ⊕ 为本次添加的结果。在这里插入图片描述
那么有了按钮之后,点击按钮时需要应用程序有所响应。接下来安卓系统给开发者提供了一按钮被点击后的接口方法 onOptionsItemSelected ,我们可以在 这个方法中在按钮点击后进行操作。

onOptionsItemSelected

  public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()){
            case R.id.menu_first:
                // do somethings
                return true;
        }
        return false;        
    }

在方法体中为点击提供响应能够让你做任何你想要的事情。

特殊的查询按钮

我们在需要对当前控制器提供查询输入进行数据筛选时,实现下图的查询按钮,并点击按钮后得到输入框并能提交给控制器
新加入的查询按钮
查询按钮点击后
在之前的菜单按钮XML里增加一个子节点item

如下图查询输入框的添加为节点添加actionViewClass属性,属性中可以定义点击后的对象,此处设置为android.widget.SearchView,如此重新生成即可得到上面两图效果

 <item android:id="@+id/menu_search"
        android:icon="@android:drawable/ic_menu_search"
        android:title="@string/menu_search"
        app:showAsAction="ifRoom"
        app:actionViewClass="android.widget.SearchView"></item>

在创建窗体按钮菜单之时,为输入框输入提交后提供响应。通过menu获取到查询按钮,并通过查询按钮获取到上面设置给定的查询视图SearchView并为其设置提交和修改促发事件。

  public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.first_menu,menu);
        MenuItem menuItem = menu.findItem(R.id.menu_search);
        SearchView searchView =(SearchView) menuItem.getActionView();
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
            	// 输入框中输入完成后提交事件
                return false;
            }
            @Override
            public boolean onQueryTextChange(String newText) {
                // 输入框中内容变化事件
                return false;
            }
        });
        return true;
    }

总结

安卓系统可以对头部菜单按钮进行操作控制,并可以为当前按钮设置响应相应的视图,通常可以通过onCreateOptionsMenu方法创建,onOptionsItemSelected响应按钮点击。按钮的响应可以通过在创建时进行添加响应事件,也可以放置到响应方法中统一处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值