Android开发之ToolBar的使用

前言:是时候该解析ToolBar的用法了,前面我们有使用过ToolBar和DrawerLayout的搭配使用,相信大家对ToolBar有个简单的了解,那么今天我们就着重讲解ToolBar的用法。顾名思义ToolBar就是个顶部导航栏,之前用的是ActionBar(3.0API,也有兼容包),随着使用ActionBar的弊端越来越多,使用起来比较费劲,拓展性差,所以google又重新定义了一个ToolBar。

作用:可以显示标题、导航back、快捷操作、菜单等。而且Toolbar不一定要放在顶部,也可以放底部。

-------------------------------分割线----------------------------------------------

ok,咱们开始看一个效果图:


-------------------------------分割线----------------------------------------------

当然了,为了实现上述效果你也完全可以按照自己的方式自定义来实现,既然讲解ToolBar就按照ToolBar的方式来实现!

第一步添加依赖(Android Studio是默认继承AppCompatActivity类所以自然就默认使用了v7包)

compile 'com.android.support:appcompat-v7:24.2.1'
第二步修改主题 (注意主题一定要使用:NoActionBar):
 <style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar">
第三步写布局,把Toolbar当做一个普通的容器使用。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.fly.lsn10_toolbar.MainActivity">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimary"
        app:logo="@mipmap/ic_launcher"
        app:navigationIcon="@drawable/back"
        app:subtitle="fly旅行"
        app:title="fly新闻">
    </android.support.v7.widget.Toolbar>
</LinearLayout>
第四步使用Toolbar替换ActionBar

setSupportActionBar(toolbar);
第五步设置NavigationIcon的点击事件监听,比如返回按钮。
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "返回键", Toast.LENGTH_SHORT).show();
            }
        });
ok!完成代码,即可实现上述效果!

-------------------------------分割线----------------------------------------------

我们来看下这个效果:

这是一个实现搜索的效果,ok废话少说我们代码来实现,重复代码略去。

首先我们添加menu菜单:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.ricky.materialdesign.toolbar.MainActivity">

    <item
        android:id="@+id/action_search"
        android:orderInCategory="100"
        android:title="查找"
        app:actionViewClass="android.support.v7.widget.SearchView"
        app:showAsAction="always" />
    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:title="设置"
        app:showAsAction="never" />
    <item
        android:id="@+id/action_share"
        android:icon="@android:drawable/ic_menu_share"
        android:orderInCategory="100"
        android:title="分享"
        app:showAsAction="always" />
    <item
        android:id="@+id/action_edit"
        android:icon="@android:drawable/ic_menu_edit"
        android:orderInCategory="100"
        android:title="编辑"
        app:showAsAction="ifRoom" />

</menu>
然后我们在MainActivity中重写onCreateOptionsMenu方法,不懂之处看代码注释:

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        //searchView在menu里面
        MenuItem item = menu.findItem(R.id.action_search);
        SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
        //设置一出来就直接呈现搜索框---SearchView
        //searchView.setIconified(false);
        //进来就呈现搜索框并且不能被隐藏
        //searchView.setIconifiedByDefault(false);

        ImageView icon = (ImageView) searchView.findViewById(R.id.search_go_btn);
        icon.setImageResource(R.mipmap.ic_launcher);
        icon.setVisibility(View.VISIBLE);
        //searchView.setMaxWidth(200);

        SearchView.SearchAutoComplete et = (SearchView.SearchAutoComplete) searchView.findViewById(R.id.search_src_text);
        et.setHint("请输入查询的名字");
        et.setHintTextColor(Color.WHITE);

        //设置提交按钮是否可见
        searchView.setSubmitButtonEnabled(true);

        //监听焦点变化
        searchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {

            }
        });

        //searchView的关闭监听
        searchView.setOnCloseListener(new SearchView.OnCloseListener() {
            @Override
            public boolean onClose() {
                return false;
            }
        });

        searchView.setOnSearchClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "search", Toast.LENGTH_SHORT).show();
            }
        });

        //监听文本变化,调用查询
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                //提交文本
                Toast.makeText(MainActivity.this, "提交文本:" + query, Toast.LENGTH_SHORT).show();
                return true;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                // 文本改变的时候回调
                System.out.println("文本变化~~~~~" + newText);
                return false;
            }
        });
        return true;
    }

ok完成搜索效果,当然了这些只是局部的ToolBar的使用效果,正所谓师傅领进门,修行看个人,希望大家多多去看,多多去练习!

-------------------------------该休息了,毕竟熬夜伤身体啊------------------------------------



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等待着冬天的风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值