Chcę dodać niestandardową wysokość do listy rozwijanej Spinner
, powiedzmy 30 dp, i chcę ukryć separatory na liście rozwijanej Spinner
.
Do tej pory starałem się zaimplementować następujący styl do Spinner
:
<style name="spinner_style">
<item name="android:paddingLeft">0dp</item>
<item name="android:dropDownWidth">533dp</item>
<item name="android:showDividers">none</item>
<item name="android:dividerHeight">0dp</item>
<item name="android:popupBackground">@drawable/new_bg</item>
<item name="android:dropDownHeight">70dp</item>
<item name="android:scrollbarAlwaysDrawVerticalTrack">true</item>
<item name="android:dropDownSelector">@android:color/white</item>
</style>
a kod mojego spinnera to:
<Spinner
android:id="@+id/pioedittxt5"
android:layout_width="543dp"
android:layout_height="63dp"
android:layout_toRightOf="@+id/piotxt5"
android:background="@drawable/spinner"
style="@style/spinner_style"
android:dropDownVerticalOffset="-53dp"
android:spinnerMode="dropdown"
android:drawSelectorOnTop="true"
android:entries="@array/travelreasons"
android:prompt="@string/prompt" />
Ale wydaje się, że nic nie działa.
Odpowiedzi:
Utwórz niestandardowy adapter z niestandardowym układem dla swojego spinnera.
R.layout.simple_spinner_item
R.layout.simple_spinner_dropdown_item
W stylach dodaj niestandardowe wymiary i wysokość zgodnie z wymaganiami.
źródło
<item name="android:height">
na<item name="android:layout_height">
android:id="@+android:id/text1"
w pliku simple_spinner_dropdown_item.xml?Możesz stworzyć w pełni niestandardowy projekt przędzarki, taki jak
Krok 1: W folderze do rysowania utwórz background.xml jako obramowanie przędzarki.
Krok 2: do projektowania układu spinner użyj tej rozwijanej ikony lub dowolnego obrazu drop.png
Wreszcie wygląda jak na poniższym obrazku i jest wszędzie klikalny w okrągłym obszarze i nie ma potrzeby pisania click Lister dla imageView.
Krok 3: W przypadku projektowania rozwijanego usuń wiersz z listy rozwijanej i zmień kolor tła, utwórz niestandardowy adapter, taki jak
W folderze układu utwórz R.layout.spinner_text.xml
W folderze układu utwórz simple_spinner_dropdown.xml
W stylach możesz dodać niestandardowe wymiary i wysokość zgodnie z wymaganiami.
Wreszcie wygląda jak
Zgodnie z wymaganiami możesz zmienić kolor tła i kolor tekstu listy rozwijanej, zmieniając kolor tła lub kolor tekstu simple_spinner_dropdown.xml
źródło
Najbardziej eleganckie i elastyczne rozwiązanie, jakie do tej pory znalazłem, jest tutaj: http://android-er.blogspot.sg/2010/12/custom-arrayadapter-for-spinner-with.html
Zasadniczo wykonaj następujące kroki:
Utwórz niestandardową klasę widoku dla rozwijanego adaptera. W tej klasie niestandardowej musisz nadpisać i ustawić niestandardowy układ elementów listy rozwijanej w metodzie getView () i getDropdownView (). Mój kod jest jak poniżej:
W swoim działaniu lub fragmencie użyj niestandardowego adaptera do widoku obrotowego. Coś takiego:
gdzie opcje to lista rozwijanych ciągów pozycji.
źródło
Spróbuj tego
napotkałem wiele problemów, kiedy próbowałem innego rozwiązania ...... Po wielu pracach badawczo-rozwojowych otrzymałem rozwiązanie
utwórz custom_spinner.xml w folderze układu i wklej ten kod
w swojej działalności
utwórz nową klasę adaptera
źródło
To zadziałało dla mnie:
aw moim folderze układu utworzyłem
simple_spinner_item
:źródło
Zbudowałem mały projekt demonstracyjny na tym, możesz go obejrzeć. Link do projektu
źródło