Mam ten kod:
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/cashItemsList"
android:cacheColorHint="#00000000"
android:divider="@drawable/list_divider"></ListView>
gdzie @drawable/list_divider
jest:
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<stroke
android:width="1dp"
android:color="#8F8F8F"
android:dashWidth="1dp"
android:dashGap="1dp" />
</shape>
ale nie widzę żadnej rozdzielacza.
Odpowiedzi:
Ludzie, oto dlaczego powinieneś użyć 1px zamiast 1dp lub 1dip: jeśli określisz 1dp lub 1dip, Android zmniejszy to. Na urządzeniu o rozdzielczości 120 dpi jest to tłumaczone na mniej więcej 0,75 piksela, co zaokrągla do 0. Na niektórych urządzeniach przekłada się to na 2-3 piksele i zwykle wygląda brzydko lub niechlujnie
W przypadku dzielników 1px jest prawidłową wysokością, jeśli chcesz mieć separator 1 piksela i jest jednym z wyjątków od reguły „wszystko powinno być zanurzone”. Na wszystkich ekranach będzie miał 1 piksel. Ponadto 1px zwykle wygląda lepiej na ekranach HDpi i wyższych
Edycja "To już nie rok 2012": być może będziesz musiał przełączyć się na dp / dip, zaczynając od określonej gęstości ekranu
źródło
To jest obejście, ale działa dla mnie:
Utworzono plik res / drawable / divider.xml w następujący sposób:
A w styles.xml dla elementu listview dodałem następujące wiersze:
Kluczową częścią było uwzględnienie tego ustawienia 1px. Oczywiście drawable używa gradientu (z 1px) i nie jest to optymalne rozwiązanie. Próbowałem użyć udaru, ale nie udało mi się. (Wygląda na to, że nie używasz stylów, więc po prostu dodaj atrybut android: dividerHeight = "1px" dla ListView.
źródło
Dodaj
android:dividerHeight="1px"
i zadziała:źródło
Problem, który masz, wynika z faktu, że brakuje Ci androida: dividerHeight, którego potrzebujesz, oraz faktu, że próbujesz określić grubość linii w swoim rysunku, czego nie możesz zrobić z separatorami dla niektórych dziwny powód. Aby przykład zadziałał, możesz zrobić coś takiego:
Utwórz swój do rysowania jako prostokąt lub linię, albo działa, po prostu nie możesz spróbować ustawić na nim żadnych wymiarów, więc albo:
LUB:
Następnie stwórz własny styl (tylko preferencje, ale lubię mieć możliwość ponownego użycia)
Na koniec zadeklaruj widok listy, używając stylu niestandardowego:
Zakładam, że wiesz, jak używać tych fragmentów, jeśli nie, daj mi znać. Zasadniczo odpowiedzią na twoje pytanie jest to, że nie możesz ustawić grubości dzielnika w rysowalnym, musisz zostawić tam niezdefiniowaną szerokość i zamiast tego użyć android: dividerHeight, aby ją ustawić.
źródło
Z dokumentu:
Wygląda na to, że
setDividerHeight()
musi zostać wywołana, aby separator pojawił się, jeśli nie ma wewnętrznej wysokościźródło
Twój
@drawable/list_divide
powinien wyglądać tak:W swojej wersji podajesz an
android:width="1dp"
, po prostu zmień go naandroid:height="1dp"
i powinno działać!źródło
Z dokumentu :
w zasadzie będziesz musiał umieścić plik o nazwie
list_divider.xml
wres/drawable/
aby mieć do niego dostęp jakoR.drawable.list_divider
; jeśli możesz uzyskać do niego dostęp w ten sposób, możesz użyćandroid:divider="@drawable/list_divider"
w XML dlaListView
.źródło
Niektórzy ludzie mogą doświadczać ciągłej linii.
android:layerType="software"
Obejrzałem to, dodając do widoku odwołującego się do rysowalnego.źródło
Dokumentacja Androida ostrzega przed znikaniem rzeczy z powodu błędu zaokrąglenia ... Być może spróbuj użyć dp zamiast px, a być może najpierw spróbuj> 1, aby sprawdzić, czy jest to problem z zaokrągleniem.
zobacz http://developer.android.com/guide/practices/screens_support.html#testing
dla sekcji „Obrazy o wysokości / szerokości 1 piksela”
źródło
Miałem ten sam problem. Jednak widok 1px nie działał na moim oryginalnym Nexusie 7. Zauważyłem, że gęstość ekranu wynosiła 213, czyli mniej niż 240 w xhdpi. Więc myślał, że urządzenie ma gęstość mdpi.
Moim rozwiązaniem było sprawienie, by
dimens
folder miałdividerHeight
parametr. Ustawiłem to2dp
wvalues-mdpi
folderze, ale1dp
wvalues-hdpi
folderach itp.źródło
zapomniałeś „r” na końcu separatora w układzie dzielnika xml
nazywasz layout @ drawable / list_divider, ale twój separator xml nazywa się "list_divide"
źródło
ustaw android: dividerHeight = "1dp"
źródło