Jak utworzyć ListView z zaokrąglonymi narożnikami w systemie Android?
android
android-layout
android-listview
Legenda
źródło
źródło
Odpowiedzi:
Oto jeden ze sposobów na zrobienie tego (dzięki Dokumentacji Androida!):
Dodaj następujące elementy do pliku (powiedzmy customshape.xml), a następnie umieść je w (res / drawable / customshape.xml)
Gdy skończysz tworzyć ten plik, po prostu ustaw tło w jeden z następujących sposobów:
Poprzez kod:
listView.setBackgroundResource(R.drawable.customshape);
Za pomocą XML wystarczy dodać następujący atrybut do kontenera (np. LinearLayout lub do dowolnych pól):
Mam nadzieję, że ktoś uzna to za przydatne ...
źródło
Chociaż to zadziałało, usunęło również cały kolor tła. Szukałem sposobu, aby zrobić tylko obramowanie i po prostu zastąpić ten kod układu XML tym kodem i było dobrze!
źródło
@ kris-van-bael
Dla tych, którzy mają problemy z podświetleniem wyboru w górnym i dolnym wierszu, gdzie prostokąt tła pojawia się po zaznaczeniu, musisz ustawić selektor widoku listy na przezroczysty kolor.
W color.xml po prostu dodaj następujące -
źródło
android:cacheColorHint="@android:color/transparent"
Dzięki autorom pozostałe odpowiedzi są bardzo przydatne!
Ale nie mogłem zobaczyć, jak dostosować prostokąt, podświetlając element po zaznaczeniu, zamiast wyłączać podświetlanie @alvins @bharat dojeha.
Poniższe działa dla mnie, aby utworzyć zaokrąglony kontener elementów widoku listy bez konturu i jaśniej szarego po wybraniu tego samego kształtu:
Twój xml musi zawierać selektor, taki jak np. (W res / drawable / customshape.xml):
Następnie należy zaimplementować adapter listy i zastąpić metodę getView, aby ustawić selektor niestandardowy jako tło
i muszę również `` ukryć '' domyślny prostokąt selektora, np. w onCreate (ukrywam również cienką szarą linię podziału między elementami):
Takie podejście rozwiązuje ogólne rozwiązanie dla obiektów rysunkowych, a nie tylko ListViewItem z różnymi stanami wyboru.
źródło
Aktualizacja
Obecnie rozwiązaniem jest użycie wbudowanej
CardView
obsługi zaokrąglonych narożników.Oryginalna odpowiedź *
Innym sposobem, jaki znalazłem, było zamaskowanie układu przez narysowanie obrazu na górze układu. To może ci pomóc. Sprawdź zaokrąglone, przycięte rogi XML w systemie Android
źródło
Jeszcze inne rozwiązanie zaznaczania problemów z pierwszą i ostatnią pozycją na liście:
Dodaj wypełnienie na górze i na dole tła listy równe lub większe niż promień. Zapewnia to, że podświetlenie zaznaczenia nie pokrywa się z krzywymi narożników.
Jest to najłatwiejsze rozwiązanie, gdy potrzebujesz nieprzejrzystego podświetlenia zaznaczenia.
źródło
właściwie myślę, że najlepsze rozwiązanie jest opisane pod tym linkiem:
http://blog.synyx.de/2011/11/android-listview-with-rounded-corners/
w skrócie, używa innego tła dla górnych, środkowych i dolnych elementów, tak aby górne i dolne były zaokrąglone.
źródło
To było dla mnie niesamowicie przydatne. Chciałbym zasugerować inne obejście, aby idealnie podkreślić zaokrąglone rogi, jeśli używasz własnego
CustomAdapter
.Definiowanie plików XML
Przede wszystkim wejdź do folderu do rysowania i utwórz 4 różne kształty:
shape_top
shape_normal
shape_bottom
kształt_ zaokrąglony
Teraz utwórz inny układ wierszy dla każdego kształtu, np. Dla
shape_top
:Możesz również zrobić to programowo zmieniając tło.
I zdefiniuj selektor dla każdej listy kształtów, tj. Dla
shape_top
:Zmień CustomAdapter
Na koniec zdefiniuj opcje układu w
CustomAdapter
:I gotowe!
źródło
aby zrobić obramowanie, musisz utworzyć inny plik xml z właściwością bryły i rogów w folderze do rysowania i wywołać go w tle
źródło
Używam widoku niestandardowego, który układam na innych i który po prostu rysuje 4 małe rogi w tym samym kolorze co tło. Działa to niezależnie od zawartości widoku i nie zajmuje dużo pamięci.
źródło