Utworzyłem specjalną listę, która istnieje z następujących elementów, aby utworzyć przewijaną listę z każdym wierszem zawierającym obraz po lewej stronie i trochę tekstu po prawej stronie:
Aby rozpocząć od układu „root”:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#C8C8C8"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:drawSelectorOnTop="false"
android:divider="#C8C8C8"
android:background="#C8C8C8"/>
</LinearLayout>
a następnie w widoku listy umieszczam następujący element „wiersz”:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@drawable/bg_row"
>
<ImageView
android:layout_width="wrap_content"
android:paddingLeft="10px"
android:paddingRight="15px"
android:paddingTop="5px"
android:paddingBottom="5px"
android:layout_height="wrap_content"
android:src="@drawable/bg_image"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="5px"
android:paddingBottom="5px"
android:textSize="16sp"
android:textColor="#000000"
android:layout_gravity="center"
android:maxHeight="50px"/>
</LinearLayout>
Tak długo, jak ekran jest wyświetlany statycznie (bez ruchu), będzie wyświetlany poprawnie, ale kiedy zacznę przewijać listę, tło elementu wiersza („ikona”, jak można pokazać w kodzie) pokazane poprawnie, ale tło układu „root” stanie się całkowicie czarne ... kiedy przewijanie się zatrzyma, tło w większości odzyska swój kolor ... Podczas testowania dodałem również TextView
w tym elemencie root na tym samym tle, ten zachowa swój kolor, gdy przewinie się listę ... Masz pojęcie, dlaczego tak się dzieje i jak to rozwiązać?
android:cacheColorHint="#0000"
działa również, jeśli boisz się zer.android:cacheColorHint="@android:color/transparent"
jeśli boisz się liczb :)To bardzo proste, wystarczy użyć tej linii w pliku układu:
lubię to:
źródło
możesz użyć w ten sposób:
źródło
źródło
Mamy wiele opcji dla tego problemu, możesz ustawić tło jako przezroczyste poprzez programowanie jak
lub poprzez xml
źródło
W xml gdzie użyć
Listview
zestawuźródło
Używam obrazów
listView
i czasami robi się czarny w samsung s4, nawet nie przewijając. To był głupi błąd, który popełniłem w adapterze. Po prostu ustawiłem swój widok na zero, aby naprawić ten problemźródło
Istnieje wiele odpowiedzi na to pytanie, ale dzisiaj zdałem sobie sprawę, że w tym pytaniu wciąż brakuje krytycznej informacji.
Istnieją dwa możliwe rozwiązania problemu, oba działają, ale każde z nich powinno być stosowane w różnych sytuacjach.
Metody
Użyj
android:cacheColorHint
kiedy waszListView
posiada solidną kolor tła.Użyj,
android:scrollingCache
gdy maszListView
(złożony) obraz jako tło.Uwaga
Gdy twoje
ListView
tło ma jednolity kolor, obie metody będą działać, więc nie tylkocacheColorHint
będą działać. Nie zaleca się jednak używaniascrolingCache
metody dla jednolitych kolorów tła, ponieważ wyłącza ona metodę optymalizacji używaną do płynnego animowania i przewijania ListView.Uwaga do notatki:
scrolingCache
ustawienie na false nie musi oznaczać, żeListView
animacje będą się przewijać powoli.źródło
źródło
Dla mnie działało:
źródło
android:cacheColorHint="#00000000"// setting transparent color
lub
nie ustawiaj tła
listview
.źródło