Android Jetpack之AppCompat(一) (3)

左侧是否显示搜索图标


更多可使用的API请参考官方文档:
https://developer.android.google.cn/reference/android/widget/SearchView

不过,我们这里还需要做最后一点善后。如果你是一路下来照着本篇文章敲代码的话,在搜索框打开的情况下按一下返回键,你期待的是什么?是不是取消搜索操作,停留在当前界面?然而实际上是……退出了APP。
所以我们这里要对返回键的默认动作做一个“拦截”,具体可参考如下代码片:

@Override public boolean onKeyUp(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_BACK: if (!tbSearchSv.isIconified()) { tbSearchSv.setIconified(true); return true; } break; } return super.onKeyUp(keyCode, event); }

这里SearchView的isIconfied()方法可以返回当前的SearchView展开状态。

四、返回上一层

ToolBar还有一个比较常见的功能就是左上角的返回按钮,提供返回上一层操作,很多的APP开发者都习惯于自定义一个ImageButton或类似的空间,然后使用美工提供的图像素材,设置监听器,写Selector……一套下来,费时费力。
其实Google已经为开发者提供了现成的非常易用的返回逻辑处理。要实现这些处理,两步就搞定了。

1. 在ToolBar对象上启用返回钮

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

这里注意,虽然之前将ToolBar通过setSupportActionBar()方式当做参数被set了一次,但是ToolBar类本身并不提供setDisplayHomeAsUpEnabled()方法,因此,我们还需要getSupportActionBar(),先获取ActionBar对象,然后使用该对象,而不是直接使用ToolBar对象。

2. 在AndroidManifest.xml中定义要跳转的Activity
如题,我们在AndroidManifest.xml中,对子Activity做处理,这里不要忘记兼容低版本的系统。

<activity android:name=".MainActivity" android:parentActivityName=".SecondActivity"> <!-- 兼容 Android4.0 及以下版本--> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".SecondActivity" /> </activity>

将SecondActivity改为入口Activity,然后重新运行程序,将实现如下效果:

返回键视频演示


到此,关于ToolBar常见用法的梳理告一段落。源码请自取:
https://github.com/wh1990xiao2005/JetpackDemo

我会在接下来的文章中,和大家分享关于ToolBar的剩余内容,以及AppCompat兼容包中的其他知识,希望对你我都有帮助。
共勉!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpyyxy.html