Widok listy w tle staje się czarny podczas przewijania
Stworzyłem specjalną listę, która istnieje z następujących elementów, aby utworzyć listę przewijalną z każdym wierszem zawierającym obraz po lewej stronie i trochę tekstu po prawej stronie:
Na początek układ "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 ListView umieszczam następującą pozycję "row":
<?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 (jak bez ruchu) będzie wyświetlany poprawnie, ale kiedy zacznę przewijać listę tło wiersz-element ("ikona", jak można pokazać w kodzie) zostanie wyświetlony poprawnie, ale tło układu" root " stanie się całkowicie czarne... po zatrzymaniu przewijania tło w większości przypadków odzyskuje swój kolor...
Podczas testowania dodałem również TextView
w tym głównym elemencie z tym samym tłem, ten zatrzyma jego kolor podczas przewijania listy...
Jakieś pomysły, dlaczego tak się dzieje i jak to rozwiązać?
11 answers
Dodaj atrybut na znaczniku ListView
android:cacheColorHint="#00000000" // setting transparent color
Po Więcej szczegółów zajrzyj na ten blog
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-27 09:38:16
To bardzo proste, wystarczy użyć tej linii w pliku układu:
android:scrollingCache="false"
TAK:
<ListView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollingCache="false"
/>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-22 08:03:07
Możesz użyć tak:
list.setCacheColorHint(Color.TRANSPARENT);
list.requestFocus(0);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-30 12:58:19
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:drawSelectorOnTop="false"
android:divider="#C8C8C8"
android:background="#C8C8C8"
android:cacheColorHint="#00000000"/>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-08 04:26:51
Mamy wiele opcji dla tego problemu, możesz ustawić tło jako przezroczyste poprzez programowanie takie jak
yourlistview.setCacheColorHint(Color.TRANSPARENT);
Lub poprzez xml
android:cacheColorHint="@android:color/transparent"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-18 05:22:35
Używam zdjęć w listView
i robi się czarny czasami w Samsungu s4 nawet nie przewijając. To był głupi błąd, który zrobiłem w adapterze.Po prostu umieścić mój widok na null aby rozwiązać ten problem
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Holder holder;
convertView = null; // convert view should be null
if (convertView == null) {
holder = new Holder();
convertView = inflater1.inflate(R.layout.listview_draftreport_item, null);
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-28 02:46:31
Jest mnóstwo odpowiedzi na to pytanie, ale dzisiaj zdałem sobie sprawę, że to pytanie wciąż brakuje krytycznej informacji.
Istnieją dwa możliwe rozwiązania problemu, oba działają, ale każdy powinien być stosowany w różnych sytuacjach.
Metody
Użyj android:cacheColorHint
, gdy twoje ListView
ma solidne kolorowe tło.
<item name="android:cacheColorHint">@android:color/transparent</item>
Użyj android:scrollingCache
, gdy twoje ListView
ma (złożony) obraz jako tło.
<item name="android:scrollingCache">false</item>
Uwaga
Gdy twoja ListView
ma jednolite tło, obie metody będą działać, więc nie tylko cacheColorHint
będą działać. Nie zaleca się jednak stosowania metody scrolingCache
W przypadku kolorowych tła, ponieważ wyłącza ona metodę optymalizacji używaną do płynnego animowania i przewijania widoku listy.
Notka za notkę: scrolingCache
wartość false nie musi oznaczać, że animacje i przewijanie ListView
będą wolne.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-28 02:44:24
W Twoim xml gdzie używać Listview
Ustaw
android:cacheColorHint="@android:color/transparent"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-28 02:46:00
android:cacheColorHint="@android:color/transparent"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-28 20:42:19
Zadziałało dla mnie:
myListView.setScrollingCacheEnabled(false);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-01 07:37:07
android:cacheColorHint="#00000000"// setting transparent color
Lub
nie ustawiaj tła .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-28 02:45:40