Клавиатура Android WebView не появляется в течение длительного времени для ввода значений - PullRequest
8 голосов
/ 14 ноября 2011

У меня есть приложение для Android 3.0 с WebView внутри. Webview открывает веб-сайт, который использует сценарий Java. Открытие сайта работает нормально. Но всякий раз, когда я нажимаю на TextField, клавиатура не появляется.

Я уже пробовал: При нажатии на поле формы в WebView не отображается программная клавиатура

но безуспешно. Клавиатура появляется очень скоро и после этого исчезает. С моей точки зрения это вызвано неким javascript. Это HTML-код одного из полей ввода:

<input id="ToolbarOkCode" class="urEdf2TxtEnbl" type="Text" style="text-align:;width:150px;" value="" name="ToolbarOkCode" lsevents="{'Change':[{'ClientAction':'none'},{'type':'TOOLBARINPUTFIELD'}],'Enter':[{'ClientAction':'submit','PrepareScript':'return its.XControlSubmit();','ResponseData':'delta','TransportMethod':'partial'},{'type':'TOOLBARINPUTFIELD','~XRequest':'X'}]}" lsdata="{0:'',1:'',2:'',3:20,4:200,5:false,6:false,7:true,8:false,9:false,10:'STRING',11:'F4LOOKUP',12:'150px',13:'LEFT',14:false,15:'',16:false,17:false,18:false,19:'AUTO',20:true,21:'NONE',22:'MM/dd/yyyy',23:false,24:'',25:'',26:false,27:false,28:'',29:'NORMAL',30:1,31:false,32:0,33:0}" ct="I" autocomplete="off" ti="0" tabindex="0" maxlength="200">

Ответы [ 2 ]

5 голосов
/ 05 февраля 2012

Я нашел решение для моей проблемы, хотя оно довольно конкретное, надеюсь, оно когда-нибудь кому-нибудь поможет ...

Я расширил WebViewClient и переопределил некоторые из его функций. моя проблема началась, когда я загрузил успокоительное javascript: на onLoadResource(). По какой-то причине это вызвало аномалию всей клавиатуры. Я переместил скрипт для запуска на onPageFinished(), и WebView снова работает нормально.

0 голосов
/ 02 февраля 2012

Я использовал ваш код и затем попытался запустить на Android 2.2. Он работает нормально и показывает клавиатуру для ввода значения. Я публикую полный код, который я запускаю

        String str="<input id=\"ToolbarOkCode\" class=\"urEdf2TxtEnbl\" type=\"Text\" style=\"text-align:;width:150px;\" value=\"d\" " +
            " name=\"ToolbarOkCode\" lsevents=\"{'Change':[{'ClientAction':'none'},{'type':'TOOLBARINPUTFIELD'}],"+
        "'Enter':[{'ClientAction':'submit','PrepareScript':'return its.XControlSubmit();','ResponseData':'delta','TransportMethod':'partial'},"+
        "{'type':'TOOLBARINPUTFIELD','~XRequest':'X'}]}\" lsdata=\"{0:'',1:'',2:'',3:20,4:200,5:false,6:false,7:true,8:false,9:false,10:'STRING',11:"+
        "F4LOOKUP',12:'150px',13:'LEFT',"+
        "14:false,15:'',16:false,17:false,18:false,19:'AUTO',20:true,21:'NONE',22:'MM/dd/yyyy',23:false,24:'',25:'',26:false,27:false,28:'',"+
        "29:'NORMAL',30:1,31:false,32:0,33:0}\"" +
        "ct=\"I\" autocomplete=\"off\" ti=\"0\" tabindex=\"0\" maxlength=\"200\">";
   WebView webView=new WebView(this);
   webView.setFocusableInTouchMode(true);
   webView.loadData(str, "Text/html","utf-8");
   setContentView(webView);

Надеюсь, это поможет вам:)

...