WebSettings.setTextZoom不起作用的原因

需求是基于Android原生浏览器开发一个浏览器,其中有字号调整这个功能,毫无疑问,这个功能是通过WebSettings.setTextZoom来实现的,然而实际开发的时候发现,大多数网页的文字大小都没有变化。
→ 为了排查原因,首先上网查了一圈,无果。
→ 对比小米浏览器,发现能实现这个功能,难道是自己去实现的?拿来反编译,在一堆代码中发现了v.d(WebView paramWebView)方法,其中有这两句:

localWebSettings.setTextZoom(u());
localMiuiSettings.setForceEnableZoom(t());

于是想当然的认为setForceEnableZoom方法就是小米自己写的字号调整方法,深入这个方法发现最后定向到一个native方法,那这没法整啦,怎么办?
→ 又拿了几个大厂的浏览器看了下,都能实现这个功能,反编译了好几个浏览器,诸如猎豹、QQ、UC、夸客,发现光是classes.dex文件都有好几个,而且代码实在太多,找不到字号调整这个功能相关的代码。再找了个Via浏览器来反编译,这个浏览器体积够小,总算找到相关代码,然而却发现,这个功能的实现仅靠setTextZoom方法而已。看到这里,我估计我排查的方向出错了,小米的那个方法跟字号调整估计没什么关系。
→ 回到项目源代码,想起浏览器在初始化的时候,WebSettings会进行一大堆的设置,莫非是产生了冲突?经过几轮的注释调试之后,终于发现了原因:
webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING);
改成webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);就好了。

你可能感兴趣的:(安卓开发心得)