2014-11-24 2 views
6

Компонент GUI Spinner GUI представляет собой типичный дроссель с автозаполнением.
HTML5 выбрать с помощью datalist тоже, но, к сожалению, HTML5 с datalist в Android - NOT.Получить Android для лечения HTML Выберите, как Android Spinner?

Конечно, Android не будет поддерживать каталоги до следующего года (заявляют они). Что еще более важно, любой выбор HTML - это Android-приложение с взломом на планшете. На телефоне, ОК. На планшете выбор не является ниспадающим, но в нижней части экрана отображается небольшой список. В этом списке есть переключатели и кнопка «Готово». Его странный маленький компонент пользовательского интерфейса, который борется с экраном, вместо отображения списка выпадающих списков. Есть ли способ сказать Android сделать правильные вещи? Рассматривать это как в браузере на рабочем столе?

Я использовал jQuery UI droplist, и это нормально на планшете, но потом плохо на телефоне. На телефоне появляется клавиатура и блокирует дисплей. Есть ли способ сказать Android сделать правильные вещи? Чтобы не отображать клавиатуру для этого конкретного элемента ввода html?

Могу ли я сказать, Android, чтобы:

  1. Не показывать клавиатуры для некоторых элементов?
  2. Не делайте эту глупую бородавку в стиле iPad, но вы выбираете html как обычный браузер, и, как будто они делают свой собственный дропнер Spinner?
+0

PhoneGap против старого Xamarin приложения – maxweber

+0

I _think_ вы можете сделать вход 'readonly', когда он сосредоточен и пусть JQuery UI делать свою работу. Теоретически клавиатура не должна отображаться для полей readonly. –

+0

@maxweber вы попробовали подход, который я описал в своем ответе? –

ответ

1

Немного хакерский, но это возможно. Вы должны создать мост между WebView и кодом java.

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

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

В вашем html код, который вы должны удалить/скрыть select и добавить somekind в заполнитель, который может быть нажата. Отключение select не будет работать, потому что отключенный элемент не может получать события (не может быть нажат). Затем добавьте обратный вызов onclick, который инициирует метод моста. Все это можно сделать с помощью javascript.

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

Вы можете выполнить javascript`` code to the Webview from the java``` код таким образом

webView.loadUrl("javascript:yourLogicFunction()"); 

Последнее, что вы должны в это добавить OnItemSelectedListener к вертушке и в методе прослушивателя для вызова функции обратного вызова javascript в WebView с использованием метода loadUrl.

Это должно решить вашу проблему :)

Смежные вопросы