Android7.1.1之去掉workspace顶部的快速搜索条Qsb

Qsb

Android7.1.1里的Qsb是Quick search bar的缩写,位于workspace第一屏的顶部,主要是打开google浏览器搜索,但是现在国内的android手机不支持使用google浏览器或者对当下许多消费者来说这个控件是没什么大用的,而且主要是当前项目的需求要的是直接显示应用列表,去掉主界面,所以去掉这个Qsb势在必行。

Android7.1.1之去掉workspace顶部的快速搜索条Qsb_第1张图片

Layout Inspector

我们如何找到需要修改的位置呢?可能很多人都知道使用Hierarchyviewer这个UI优化工具看控件id进而找到控件所在位置,但是Android studio2.2之后推出了一个新的Android布局分析工具Layout Inspector,它位于Tools/Android/菜单目录下,找到并打开它,如下

Android7.1.1之去掉workspace顶部的快速搜索条Qsb_第2张图片

Android7.1.1之去掉workspace顶部的快速搜索条Qsb_第3张图片

开始-find

从上面的布局分析工具可知该控件来自于自定义View类QsbBlockerView和QsbContainerView
接下来有两种方式来找哪些资源文件用到了这两个类
法一:com.android.launcher3找到这两个类,分别右击鼠标选择Find Usages,就可看到两个资源文件qsb_blocker_view.xml和qsb_container.xml

Android7.1.1之去掉workspace顶部的快速搜索条Qsb_第4张图片

Android7.1.1之去掉workspace顶部的快速搜索条Qsb_第5张图片

法二:Git Bash窗口,根据命令grep -nr QsbBlockerView * 和 grep -nr QsbContainerView * 也可得

注意在QsbContainerView类中,有个getDefaultView()方法不容忽视,里面用到了qsb_default_view这个资源文件,所以qsb_container.xml这个容器实际的内容是qsb_default_view.xml中的内容

Android7.1.1之去掉workspace顶部的快速搜索条Qsb_第6张图片

修改

找准位置,开始修改。
注释掉qsb_default_view.xml中的整个LinearLayout,之后QsbContainerView类中会出现错误,主要是跟qsb_default_view.xml里的两个资源id有关,注释掉关于R.id.btn_qsb_search和R.id.btn_qsb_setup的相关代码。
运行之:

Android7.1.1之去掉workspace顶部的快速搜索条Qsb_第7张图片

虽然Qsb不再显示在workspace上,但长按workspace上的任意图标会看见最开始放Qsb的位置依然有一个灰色背景块存在,且不能拖进任何图标到该位置,如下图:

Android7.1.1之去掉workspace顶部的快速搜索条Qsb_第8张图片

所以我们还需要找到设置这个灰色背景块的地方
针对qsb_blocker_view.xml、qsb_container.xml、qsb_default_view.xml这三个资源文件Find Usages一下,发现Workspace.java这个类中也有引用到,找到该位置,如下图:

Android7.1.1之去掉workspace顶部的快速搜索条Qsb_第9张图片

经分析,注释掉一下代码块即可去掉灰色背景块,并能拖动或添加任何icon到该位置

这里写图片描述

运行之:

Android7.1.1之去掉workspace顶部的快速搜索条Qsb_第10张图片

你可能感兴趣的:(android源码,launcher)