ANDROID Toolbar

这里写图片描述
Toobar主要是用来替换ActionBar的,换句话说,ActionBar能做的,Toolbar都能做。如果你对ActionBar的使用比较熟悉,你会发现Toolbar使用起来非常简单。既然是替换,当然用Toolbar的时候就得先去把ActionBar给隐藏掉.

隐藏ActionBar的方法有很多,可以通过代码的方式隐藏,也可以通过配置文件的方式,我们主要是通过配置文件的方式来隐藏。在我们的styles.xml文件中的AppTheme标签中加入如下两行:

<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>

当然了,你也可以新建一个<style>标签,将上面两行代码加入,并且将这个新建的标签作为<application>的theme。还可以选择通过将AppTheme的parent设置为Theme.AppCompat.Light.NoActionBar的方式。方法很多,可以自己随便选。
接下来就是将Toolbar放入到布局文件

<!--?attr/actionBarSize 自动匹配toobar的高度-->
<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:background="?attr/colorPrimary"
        android:layout_height="?attr/actionBarSize"  />

最后将Toobar作为“ActionBar”来用

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        //设置标题文字
        toolbar.setTitle("巅峰榜 流行指数 第64天");
        setSupportActionBar(toolbar);
        // 显示返回箭头
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        //修改图标
        //getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_search);

添加操作按钮和 action overflow 中其他可用的条目,通过在项目的 res/menu 目录中新增一个 XML 文件来为 添加操作。

<?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/action_search"
        android:icon="@drawable/ic_action_search"
        android:title="@string/action_search"
        app:actionViewClass="android.support.v7.widget.SearchView"
        app:showAsAction="ifRoom" />
    <!-- 设置, 在溢出菜单中展示 -->
    <item
        android:title="@string/action_settings"
        android:id="@+id/action_settings"
        app:showAsAction="never" />

</menu>

添加活动视图 Action View:
1、直接指定Android系统中的SearchView控件,如上面的代码:app:actionViewClass="android.support.v7.widget.SearchView"
2、我们可以在menu的布局文件使用中来自定义searchview布局,如代码:android:actionLayout="@layout/searchview"

要为 toolbar 布局菜单条目,就要在 activity 中实现 onCreateOptionsMenu() 回调方法来 inflate 菜单资源从而获取 Menu 对象

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.action_menu,menu);
        //获取searchView findviewbyid
        SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search));
        searchView.setOnQueryTextListener(this);
        return super.onCreateOptionsMenu(menu);
    }
        @Override
    public boolean onQueryTextSubmit(String query) {
        return false;
    }

    @Override
    public boolean onQueryTextChange(String newText) {
        return false;
    }

item点击事件的处理

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
       @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case android.R.id.home: //返回按钮
                onBackPressed();
                break;
            case R.id.action_settings:
                Toast.makeText(SecondActivity.this,"点击了设置",Toast.LENGTH_SHORT).show();
                break;
        }
        return super.onOptionsItemSelected(item);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值