让Android将HTML Select视为Android Spinner?

7

Android Spinner GUI组件是一种具有自动完成功能的典型下拉列表。HTML5 datalist也是如此,但不幸的是,在Android中使用HTML5 datalist不支持

当然,Android声称直到明年才会支持datalist。更重要的是,任何HTML select在平板电脑上都是一种hack-job Android东西。在手机上,它还可以。在平板电脑上,选择不是下拉菜单,而是一个短列表,在屏幕底部滑动。该列表具有单选按钮和“完成”按钮。这是一种奇怪的小UI组件,它在屏幕上显示而不是显示下拉列表。是否有办法告诉Android做正确的事情?像在桌面浏览器上一样处理它?

我已经使用了jQuery UI下拉列表,在平板电脑上还好,但在手机上很糟糕。在手机上,键盘弹出并阻挡了显示。是否有办法告诉Android做正确的事情?对于这个特定的html输入元素,不要显示键盘?

我能告诉Android:

  1. 不要为某些元素显示键盘?
  2. 不要做那些愚蠢的iPad风格的war,而是像正常浏览器一样,像它们自己的下拉列表Spinner?

PhoneGap与旧版的Xamarin应用程序 - maxweber
我认为当输入框被聚焦时,你可以将其设置为只读,并让jQuery UI来完成它的工作。理论上,只读字段不应该显示键盘。 - Salman A
@maxweber,你尝试过我在答案中描述的方法了吗? - Kiril Aleksandrov
嗨,Kiril,不,我不知道那个。但是,你的回答是最好的。我正在努力想出如何接受它。总之,又是谷歌弄坏的东西。他们真的像1999年的微软。我认为在他们变得毫无进展之前,他们还有更多的创新。 - maxweber
顺便提一下,看了竞争对手的应用程序,他们也没有弄清楚这些东西。当他们使用PhoneGap时,键盘会覆盖在金额字段上面等等。这是一个财富50强公司,却做不好这件事情。 - maxweber
1个回答

1
这有点瑕疵,但是可以实现。你需要在WebViewJava代码之间创建一个JavaScript桥接器。
class JsBridge {
   @JavascriptInterface
   public void showNativeSpinner() {
       // show native spinner logic
   }
}

webView.addJavascriptInterface(new JsBridge(), "jsBridge");

在您的HTML代码中,您需要移除/隐藏不起作用,因为禁用的元素无法接收事件(无法被单击)。然后附加一个onclick回调,触发桥接方法。所有这些都可以使用JavaScript完成。
$("#my-select").hide();
$("#my-select-parent").append("<div id='placeholder'></div>");
$("#placeholder").on("click", function() {
    jsBridge.showNativeSpinner();
});

你可以通过这种方式从Java代码执行JavaScript代码到WebView中。
webView.loadUrl("javascript:yourLogicFunction()");

您需要做的最后一件事是将OnItemSelectedListener添加到下拉列表中,在监听方法中再次使用loadUrl方法调用WebView中的javascript回调函数。这样应该就能解决您的问题 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接