让Android处理HTML选择像Android Spinner一样?

max*_*ber 6 html5 select android android-spinner

Android Spinner GUI组件是具有自动完成功能的典型下拉列表.
带有数据列表的HTML5选择也是如此,但不幸的是,Android中带有datalist的HTML5 不是.

当然Android直到明年才会支持datalist(他们声称).更重要的是,任何HTML选择都是平板电脑上的黑客工作.在电话上,没关系.在平板电脑上,选择不是下拉菜单,而是在屏幕底部向上滑动一个简短列表.该列表具有单选按钮和完成按钮.它是一个奇怪的小UI组件,它放入屏幕而不是显示下拉列表.有没有办法告诉Android做正确的事情?要像在桌面上的Web浏览器中那样对待它吗?

我已经使用了jQuery UI droplist,它在平板电脑上没问题,但在手机上却很糟糕.在手机上键盘出现并阻挡显示屏.有没有办法告诉Android做正确的事情?要不显示此特定html输入元素的键盘?

我可以告诉Android:

  1. 某些元素没有显示键盘?
  2. 不是那种愚蠢的iPad风格的疣,而是像常规浏览器那样做html选择,就像他们自己的droplist Spinner一样?

Kir*_*rov 1

这有点棘手,但这是可能的。您必须在您的代码和您的代码javascript之间创建一座桥梁。WebViewjava

class JsBridge {
   @JavascriptInterface
   public void showNativeSpinner() {
       // show native spinner logic
   }
}

webView.addJavascriptInterface(new JsBridge(), "jsBridge");
Run Code Online (Sandbox Code Playgroud)

在您的html代码中,您必须删除/隐藏select并添加某种可以单击的占位符。禁用将select不起作用,因为禁用的元素无法接收事件(无法单击)。然后附加一个onclick触发桥接方法的回调。所有这些都可以使用 javascript 来完成。

$("#my-select").hide();
$("#my-select-parent").append("<div id='placeholder'></div>");
$("#placeholder").on("click", function() {
    jsBridge.showNativeSpinner();
});
Run Code Online (Sandbox Code Playgroud)

你可以这样执行javascript`` code to theWebView java```代码from the

webView.loadUrl("javascript:yourLogicFunction()");
Run Code Online (Sandbox Code Playgroud)

您应该做的最后一件事是添加OnItemSelectedListener到微调器和侦听器方法中,以再次使用该方法javascript调用回调。WebViewloadUrl

这应该可以解决你的问题:)