Android 如何在 Android Studio 2.2 版本实现 refresh 操作?

Android Studio 2.2 版本的 Layout Editor 发生了很大变化,Design 和 Preview 窗口的结构和样式做了很多改进,功能区介绍可以参考官方网站:Build a UI with Layout Editor。本文记录一个有关 refresh 操作的问题。

还记得在 Android Studio 2.2 版本之前的 refresh 按钮吗?有时候修改资源文件后,并不能在 preview 窗口中即时生效,使用这个刷新按钮即可解决这个问题。但在这次改版中,这个刷新按钮被 Google 去掉了:

preview_samples_01.png

如图,左图是 Android Studio 2.2 版本的布局预览图,没有 refresh 按钮;右图是 Android Studio 2.1 版本的布局预览图,拥有 refresh 按钮。

既然被去除掉了,那应该是新版 Android Studio 实现了自动刷新实时显示视图的功能了吧。然而事实不尽如此。举个开发中很常见的例子:

preview_samples_02.png

如图,布局中用到了一个图片资源 ic_lock.png。现在需求改变了,这个图标要替换成另一个图片。正常做法就是拿到 UI 给到的图标,重命名为相同的名字,然后复制到对应的 drawable 或者 mipmap 文件下,覆盖即可。然而你会发现,在 Design 和 Preview 窗口中显示的还是之前的图标!这时,重新打开布局文件,或者使用 Rebuild Project 命令重新编译都不能解决这个问题,甚至有时候重启 Android Studio 也不起任何作用。这也许是新版 Android Studio 的一个 BUG 吧。

经过一番搜索,在 stack overflow 上找到一种解决方案,欣喜若狂。做法很简单,在布局的 Text 窗口中将引用的资源名称故意写错,比如这里的 @mipmap/ic_lock,将其写成 @mipmap/ic_lock1,这样 DesginPrefrew 窗口就会报错,如图:

preview_samples_03.png

注意在右下角的提示信息中有个 Tip 内容,点击 refresh 按钮(清理缓存),然后再将图片的引用名称修改回来,预览图中就会显示正确的新图标:

preview_samples_03.png

当然,这只是一种临时解决方案,希望下个版本的 Android Studio 能够修复这个问题吧。感谢万能的 stack overflow 帮我解决了这个问题:

How to refresh preview on Android Studio 2.2?