2011-10-09 20 views
5

Przyjrzeliśmy się większości pytań na ten temat i nie wydaje się, aby była to ostateczna odpowiedź. Mam trzy spinnerów w różnych wierszach widoku tabeli. Używając atrybutu weight, komórki w tabeli i, w konsekwencji, przędzarki i widoki tekstowe mają tę samą szerokość.Android: Zmniejsz szerokość rozwijanej skrzynki spinnera

Jednak po kliknięciu pokrętła lista rozwijana pojawia się na całej szerokości i obejmuje całą tabelę. Musi istnieć sposób ograniczenia szerokości listy. Zawiera tylko liczbę z maksymalnie 4 cyframi.

Widziałem notatkę na R.attr.dropDownWidth, która wygląda na to, że może pomóc, ale nie mam pojęcia, jak wdrożyć tę metodę, nie mówiąc już o tym, czy to zadziała.

Każda pomoc w tej lub innej metodzie, która ograniczy szerokość drop-down do około 100 dipów będzie naprawdę doceniona - szczególnie jeśli dołączony jest przykładowy kod.

Dzięki

Alan ...

Odpowiedz

5

Jednak gdy spinner kliknięciu lista rozwijana pojawia się na całej szerokości i obejmuje całą tabelę.

Dzieje się tak dlatego, że jest to naprawdę wyskakujące okienko dialogowe.

Musi istnieć sposób ograniczenia szerokości listy.

Jest to trudne, ponieważ nie jesteś tym, który tworzy dialog. Nie widzę nawet, jak można to osiągnąć, rozszerzając Spinner o własną podklasę, biorąc pod uwagę sposób, w jaki napisano Spinner. Być może będziesz musiał sklonować kod źródłowy Spinner, przenieść go do innego pakietu (lub nazwy klasy) i zmienić performClick(), aby zmienić rozmiar AlertDialog, stosując techniki opisane w How to control the width and height of the default Alert Dialog in Android?.

Pamiętaj, że zachowanie Spinner różni się znacznie w przypadku modelu o strukturze plastra miodu, a do zobaczenia na Ice Cream Sandwich. Nie mamy kodu źródłowego Honeycomb, więc moje rozwiązanie klasy klona da ci problemy na nowszych urządzeniach.

Widziałem notatkę na R.attr.dropDownWidth który wygląda tak, jakby to może pomóc, ale nie mam pojęcia, jak wdrożyć tę metodę, nie mówiąc już, czy będzie to rzeczywiście działa.

To nie jest metoda, ale raczej atrybut, który można ustawić w stylu. Jednak w oparciu o kod źródłowy okazuje się, że jest on używany tylko w rozwijanym menu AutoCompleteTextView.

+0

Cześć, dziękuję, tak, doszedłem do tego samego wniosku i zamierzam zostawić rzeczy takimi, jakimi są. Jak sama mówisz, ta sytuacja może być inna w późniejszych wersjach, ale na razie muszę zachować kompatybilność wsteczną. Dzięki i tak. Alan ... –

+0

Po wgraniu na inne urządzenie zauważam, że elementy pokrętła i lista są dość trudne do wybrania. Ustawiłem widok tekstowy w wierszu xml jako "wrap-content" i oznaczało to, że jeśli w telewizorze było tylko 1 lub 2 znaki, musieliście nacisnąć jeden z nich, aby wybrać wiersz. Po przejściu na opcję "fill_parent" telewizor rozciąga się wzdłuż rzędu i ułatwia wybór. Myślałem, że to może pomóc innym. Najlepsze życzenia, Alan ... –

Powiązane problemy