我正在构建Cordova混合应用程序,并在onCreate执行期间缩放webView。一切正常但在我将注意力集中在文本输入之后,缩放比例正在被浪费。尝试增加字体大小得到相同的结果。 接下来我认为可以通过缩放原生Java代码来重复技巧,因此我创建了在键盘隐藏事件后调用的JavaScript接口(使用离子键盘插件)。但是,在onCreate完成后,我无法获取webView并调用大部分方法,并初始化应用程序,好像我没有正确的webView指针。
在我的MainActivity.java代码中看起来像这样。
public class MainActivity extends CordovaActivity
{
protected WebView wV;
protected float ORIG_APP_W = 1080;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
loadUrl(launchUrl);
wV = (WebView)this.appView.getEngine().getView();
...
double globalScale = Math.ceil( ( width / ORIG_APP_W ) * 100 );
wV.setInitialScale( (int)globalScale );
wV.addJavascriptInterface(new MainActivity.Bridge(), "bridge");
}
class Bridge extends CordovaPlugin {
@JavascriptInterface
public String refreshScaling()
{
double globalScale = Math.ceil( ( width / ORIG_APP_W ) * 100);
wV.setInitialScale( (int)globalScale );
return "success";
}
}
在JS中
window.addEventListener('native.keyboardhide', onKeyboardHide);
...
function onKeyboardHide(e){
window.bridge.refreshScaling();
}