스크롤 할 때 Background ListView가 검은 색이됩니다.


427

왼쪽에 이미지가 있고 오른쪽에 일부 텍스트가 포함 된 모든 행이있는 스크롤 가능한 목록을 만들기 위해 다음 요소 중 특정 목록을 만들었습니다.

"루트"레이아웃으로 시작하려면

<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>

그런 다음 ListView 내에 다음 "행"항목을 배치합니다.

<?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>

화면이 움직이지 않는 것처럼 정적으로 표시되면 올바르게 표시되지만 목록을 스크롤하기 시작하면 행 항목의 배경 (코드에 표시된 "아이콘")이 표시됩니다. 올바르게 표시하지만, 스크롤 배경은, 시대의 대부분은, 그것의 색깔을 다시 얻을 것이다 정지 할 때 "루트"레이아웃의 배경이 ... 완전히 검은 색이 될 것입니다 ...로서 나는 시험 나는 또한 추가 TextView하는 루트 요소 같은 배경으로, 이것은 목록이 스크롤 될 때 색상을 유지합니다 ... 왜 이런 일이 일어나고 있는지, 어떻게 해결할 수 있습니까?

답변:


771

ListView태그에 속성 추가

android:cacheColorHint="#00000000" // setting transparent color

자세한 내용은 이 블로그를 확인 하십시오


23
this.getListView (). setCacheColorHint (0); 레이아웃에서 색상을 설정할 수 없습니다. 그러나 위의 코드로 처리했습니다. 이 코드를 목록 활동의 'onCreate'에서 사용했습니다. 이 정보가 도움이되기를 바랍니다.
Dijo David

70
android:cacheColorHint="#0000"당신이 0을 두려워하는 경우에도 작동합니다.
앤드류

136
또는 android:cacheColorHint="@android:color/transparent"숫자를 두려워하는 경우 :)
dule

2
@android : color / transparent는 아마도 하나의 단일 비트 세트를 갖는 추가 보너스를 가지고 있습니다. 일부 전화에서 0을 전달하면 투명도가 작동하지 않는 버그가 있습니다. 따라서 트릭은 1 비트를 설정하는 것입니다.
토마스 디냥

63

레이아웃 파일에서이 줄을 사용하는 것은 매우 간단합니다.

android:scrollingCache="false"

이처럼 :

<ListView 
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollingCache="false"
/>

2
그것은 작동하지만 난 그것을 할 스마트 생각하지 않는다 : stackoverflow.com/questions/15570041/scrollingcache
모르 텐 Holmgaard

1
android : cacheColorHint = "# 00000000"은 작동하지 않지만 android : scrollingCache = "false"는 작동하는 경우가있었습니다. 감사.
Yar

27

다음과 같이 사용할 수 있습니다.

list.setCacheColorHint(Color.TRANSPARENT);
list.requestFocus(0);

10

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"/>

7

우리는이 문제에 대한 많은 옵션을 가지고 있습니다. 프로그래밍을 통해 배경을 투명하게 설정할 수 있습니다

yourlistview.setCacheColorHint(Color.TRANSPARENT); 

또는 xml을 통해

android:cacheColorHint="@android:color/transparent"

5

XML에서 Listviewset 을 사용할 위치

    android:cacheColorHint="@android:color/transparent"

5

나는 이미지를 사용 listView하고 있으며 삼성 s4에서 때로는 스크롤링되지도 않습니다. 어댑터에서했던 바보 같은 실수였습니다. 이 문제를 해결하기 위해 보기를 null 로 설정했습니다.

 @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);
             } 
        }

4

이 질문에 대한 답변이 많이 있지만 오늘이 질문에 여전히 중요한 정보가 빠져 있음을 깨달았습니다.

거기 두 가지 솔루션 이 문제에 대한 두 작품은 그러나 각각 다른 상황에서 사용해야합니다.


행동 양식

사용 android:cacheColorHint하여 때 ListView솔리드 컬러 배경을.

<item name="android:cacheColorHint">@android:color/transparent</item>

배경으로 (복잡한) 이미지android:scrollingCache있을 때 사용하십시오 .ListView

<item name="android:scrollingCache">false</item>

노트

당신이 때 ListView단색 배경이 두 가지 방법은, 작동 그래서 단지가되지 cacheColorHint작동합니다. 그러나 scrolingCache단색 배경 에는이 방법 을 사용하지 않는 것이 좋습니다 . ListView를 부드럽게 애니메이션하고 스크롤하는 데 사용되는 최적화 방법이 해제되어 있기 때문입니다.

참고에 대한 참고 : scrolingCache false로 설정했다고해서 반드시 ListView애니메이션과 스크롤이 느려지는 것은 아닙니다 .




1

android:cacheColorHint="#00000000"// setting transparent color

또는

배경을 설정 하지 마십시오listview .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.