2012-01-27 22 views
9

Mam problem z rozwijanym menu rozwijanym, które nie jest rozwijane (jest zasadniczo nieaktywne) podczas wyświetlania na urządzeniu mobilnym z systemem Android. Działa dobrze w przeglądarkach na komputerach, a także w przeglądarce ios - wyświetla koło wyboru na iOS i listę wyboru z pulpitu.wybierz rozwijane menu nieaktywne w przeglądarce Androida

Przykładowy kod to;

<select id = "log_or_norm" autofocus> 
<option value="1">Lognormal</option> 
<option value="2">Normal</option> 
</select> 

Próbowałem sugestii znalezionej na; http://youngliferamblings.wordpress.com/2011/08/09/select-dropdown-in-android-webview/

który był

select tag po prostu nie działa czasami w Androidzie, zwłaszcza w aplikacji za pomocą webview. To doprowadzało mnie do szału przez długi czas. Główna poprawka znalazłem, nawet jeśli twój wybór jest ukryty głęboko w działach i wierszach i cokolwiek to jest, to css:

wybierz { widoczność: widoczna; -webkit-appearance: menulist-text; }

Wygląd -webkit może być jedyną potrzebną i ustawienie jej również na "listbox".

To wszystko. To zasłużyło na własny post.

Bez powodzenia ....

Am nadzieję, że jeden z guru tutaj może stanowić eleganckie rozwiązanie, które będą mnie unikać konieczności zejść trasę podejmowania dyskretnych przycisków dla każdej opcji. Nie jestem zafascynowany, czy w Androidzie nie ma fajnego koła do pobierania, ale trzeba pozwolić użytkownikom systemu Android wybrać opcję.

Dziękując z góry

+0

Jedną rzeczą, o której zapomniałem wspomnieć, jest to, że robię to w ramach systemu iui. Wygląda na to, że może to być problem iui, a ja pomagam zespołowi programistów go związać. Zobacz http://code.google.com/p/iui/issues/detail?id=263 – vinomarky

+0

Może być powiązany: http://wil.to/android-positioning/fixed.html – James

+0

też się do tego używam, ale tylko wtedy, gdy ustawię szerokość lub dopełnienie. – spy

Odpowiedz

0

Spróbuj

getDriver().createElement(By.id("your locator")); 
getDriver().createElement(By.id("your locator")).sendKeys("option Name you want to give"); 
+3

Czy możesz wyjaśnić, co to robi? – drogon

0
var divCreated = false; 
$(document).ready(function() { 
     var value = ""; 
     $("select").each(function (i) { 
       $(this).click(function() { 
         //alert(($(this).is(":focus"))); 
         if (!($(this).is(":focus"))) { 
          if (!divCreated) { 
           $("body").append('<div class="for_select"></div>'); 
           divCreated = true; 
          } 
          $(this).clone().appendTo(".for_select"); 
          open($(this)); 
         } 
        }); 
      }); 

     function open(obj) { 
      var pos = $(obj).offset(); 
      $(".for_select select").css("position", "absolute"); 
      $(".for_select select").css("zIndex", "9999999999999"); 
      var toAdd = $(obj).innerHeight(); 
      $(".for_select select").offset({ 
        top: pos.top + toAdd, 
        left: pos.left 
       }); 
      $(".for_select select").attr("size", ($(obj).children("option").length > 10 ? 10 : $(obj).children("option").length)); 
      $(".for_select select").change(function() { 
        value = $(".for_select select").val(); 
        $(obj).val(value); 

        $(obj).children("option").each(function() { 
          if ($(this).text() == value) 
           $(this).attr("selected", "selected"); 
          else if ($(this).attr("selected")) { 
           $(this).removeAttr("selected"); 
          } 
         }); 
        var parentHeight = $(obj).parent().innerHeight(); 
        $(obj).parent().css("height", parentHeight + "px"); 
        $(obj).parent().css("position", "relative"); 
        $(obj).css("position", "absolute"); 
        $(obj).css("left", "0px"); 
        var prevElementsHeight = 0; 
        var isSelect = false; 
        $(obj).parent().children("*").each(function() { 
          if ($(this) == $(obj)) 
           isSelect = true; 
          if (!isSelect) 
           prevElementsHeight += $(this).innerHeight(); 
         }); 
        $(obj).css("top", (prevElementsHeight/2) + "px"); 
        $(obj).css("zIndex", "9999"); 

        close($(".for_select select")); 
       }); 
     } 

     function close(obj) { 
      $(obj).css("position", "static"); 
      $(obj).attr("size", "1"); 
      $(".for_select").empty(); 
     } 
    }); 
+0

nie działa dla mnie. dzięki za wysiłek. – spy

0

Rozwiązanie przyszło raczej prosty po walczyłem to przez kilka dni.

Spróbuj przeprowadzić debugowanie, wyciągając zaznaczenie z zagnieżdżonych elementów div, aż znajdziesz problematyczny element div.

W moim przypadku problem polegał na tym, że opakowałem wszystkie elementy div-data-role = "page" w div jednostki nadrzędnej (dla ładowania sake na urządzeniach low-end). Z jakiegoś powodu, < Android 2.3 ma z tym problem.