我在基于PhoneGap的Android应用程序中遇到了一个奇怪的问题。在某些屏幕上, 数字9键完全被忽略。这发生在我的所有Android上 2.X设备。我尝试过以前版本的PG并发现了 问题首先发生在v1.2中。
以下是应该重现该问题的示例index.html文件的代码。在Android 2.2和2.3上,文本框标记为"已破坏"不接受数字9作为输入。
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<style>
body
{
margin:0;
padding:0;
font-size:20px;
}
input
{
height:20px;
}
#container_second
{
overflow:hidden;
position:relative;
width:100%;
height:150px;
}
#container_second div
{
left: -2000px;
position: absolute;
-webkit-transform: matrix(1, 0, 0, 1, 2000, 0);
}
</style>
</head>
<body>
<br />
<div id="container_first">
<div>
Working Text: <br /><input type="text" /><br /><br />
Working Tel: <br /><input type="tel" />
</div>
</div>
<br /><br />
<div id="container_second">
<div>
Broken Text: <br /><input type="text" /><br /><br />
Broken Tel: <br /><input type="tel" />
</div>
</div>
</body>
</html>
答案 0 :(得分:17)
可能与this issue有关。出于某种原因,PhoneGap在Web视图的WebSettings上调用setNavDump。 setNavDump是一个根据android docs的过时方法,所以如果你禁用它就应该没问题。
一种方法是覆盖扩展DroidGap的类中的init方法
@Override
public void init() {
super.init();
this.appView.getSettings().setNavDump(false);
}
如果这不起作用,请尝试在现有loadUrl
方法的onCreate
调用后添加它:
@Override
public void onCreate(Bundle savedInstanceState) {
//... snip ...
super.loadUrl("file:///android_asset/www/index.html", 12000);
this.appView.getSettings().setNavDump(false);
//... snip ...
}
答案 1 :(得分:2)
我有同样的问题。事实证明,您需要通过config.xml文件中的API编号指定Android SDK版本
添加:
<preference name="android-minSdkVersion" value="8" />
答案 2 :(得分:0)
我在eclipse中开发了一个phonegap应用程序(用于android)。我有同样的问题。当我按下7时,应用程序停止,当我按下9时,应用程序在文本区域组件中不执行任何操作。它也是一个问题出现在Android版本2.2&amp; 2.3.3。在布局中,存在诸如frame-&gt; frame-&gt;线性布局的结构。然后我删除了两个帧。我刚刚使用了线性布局,然后解决了问题。我可以按7&amp; 9,应用程序没有问题。我的意思是,你应该检查未使用的布局组件。