2010-06-13 18 views
17

Mam androida, który jest zapełniany listą ciągów znaków za pomocą ArrayAdapter i działa dobrze, jednak ze względu na sposób wyświetlania pokrętła, napotykam problem z wysokością wyświetlania z elementami listy.Jak mogę zarządzać wysokością elementów androida spinnera?

Na pierwszy rzut oka wydaje się, że ArrayAdapter może używać jednego układu do wyświetlania opcji, które prowadzą do problemu, który mam. Podczas wyświetlania bieżącej pozycji w tarczy (gdy użytkownik nie wybiera nowego elementu z listy), spinner podkłada tekst tak, aby spiner był rozsądnym rozmiarem do kliknięcia. Jednak gdy użytkownik dotknie go i wyświetli listę w celu wybrania nowego elementu, przedstawione elementy listy będą miały niewielki wzrost. Jeśli korzystam z układu przedmiotów, który przedstawia elementy listy na rozsądnej wysokości, to sama tarcza staje się ogromna z powodu własnego dopełnienia elementu listy.

Jakieś pomysły dotyczące tego, w jaki sposób mogę zarządzać wysokością tych dwóch trybów wyświetlania elementów, tak aby skutecznie wyświetlały się z tą samą wartością wysokości, a nie większą niż wysokość wyświetlanego elementu listy?

Odpowiedz

44

Zabrakło mi do tego problemu sobie jakiś czas temu, i okazało się, że muszę korzystać z różnych układów w rozwijanym i wyświetlaczem

mam ten kod:

adapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, cGroups, 
       new String[] { 
         "name", "_id" 
       }, new int[] { 
        android.R.id.text1 
       }); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
+2

To jest idealne. Dziękuję Ci! Aby być czystym, metoda setDropDownViewResource ustawia wyświetlanie elementów, gdy użytkownik wybierze z listy elementów. – rushinge

13

Tak, powyższa odpowiedź jest poprawna.

Zajęło mi to na zawsze znalezienie tego, ponieważ jest źle w próbkach SDK dla 2.2 Androida. I nie mogłem tego zaakceptować.

Oto urywek z próbek/android-12/Spinner/src/com/android/example/spinner/SpinnerActivity.java:

 
     this.mAdapter = ArrayAdapter.createFromResource(this, R.array.Planets, 
       android.R.layout.simple_spinner_dropdown_item); 

podczas gdy powinna ona mieć android.R.layout.simple_spinner_item tam zamiast i simple_spinner_dropdown_item powinno być jedynie używane do rozwijanych elementów. W przeciwnym razie strzałka pokrętła zostanie rozciągnięta i rysuje także kółko wyboru z opuszczania do ekranu.

+0

Twój wpis pomógł mi tak bardzo, jak to mi pozostawia dezorientację. Odpowiedź udzielona przez Pentium10 nadal korzysta z rozwijanego wariantu wywołania setDropDownViewResource(), co prowadzi do rozległego dopełniania pozycji. Po prostu spróbuj zmodyfikować właściwości w motywie w tej konfiguracji - powodzenia z niespójnościami ... –

+0

Odpowiedź Pentium10 jest prawidłowa, tak jak powiedziałem, i tylko się z tego cieszę. Moje uwagi dotyczą próbki, o której myślałem, że również należy o niej wspomnieć, ponieważ początkowo nie zauważyłem w niej usterki i właśnie dlatego szukałem poprawki. –

+0

Och, rozumiem. Dziękuję za wyjaśnienie. I znowu Twoja odpowiedź doprowadziła mnie na właściwą drogę, nawet jeśli początkowo źle zrozumiałem kontekst. –

Powiązane problemy