programing

스크롤할 때 배경 목록 보기가 검은색이 됨

closeapi 2023. 7. 15. 10:08
반응형

스크롤할 때 배경 목록 보기가 검은색이 됨

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

루트 레이아웃으로 시작하는 방법

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

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

에 속성 추가ListView태그

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

자세한 내용은 이 블로그를 참조하십시오.

레이아웃 파일에서 다음 행을 사용하면 매우 간단합니다.

android:scrollingCache="false"

다음과 같이:

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

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

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

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

이 문제에 대한 많은 옵션이 있습니다. 다음과 같은 프로그래밍을 통해 배경을 투명하게 설정할 수 있습니다.

yourlistview.setCacheColorHint(Color.TRANSPARENT); 

또는 xml을 통해

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

xml에서 사용할 위치Listview세트

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

이미지를 사용하고 있습니다.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);
             } 
        }

이 질문에 대한 답은 여러 가지가 있지만 오늘 저는 이 질문이 여전히 중요한 정보를 놓치고 있다는 것을 깨달았습니다.

이 문제에 대한 두 가지 가능한 해결책이 있습니다. 두 가지 모두 작동하지만 각각 다른 상황에서 사용해야 합니다.


방법들

사용하다android:cacheColorHint당신의ListView배경이 단색입니다.

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

사용하다android:scrollingCache당신의ListView(복잡한) 이미지를 배경으로 합니다.

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

메모

당신의 경우ListView배경이 단색이므로 두 가지 방법이 모두 작동합니다.cacheColorHint효과가 있을 것입니다.그러나 다음을 사용하는 것은 권장되지 않습니다.scrolingCache목록 보기를 부드럽게 애니메이션화하고 스크롤하는 데 사용되는 최적화 방법을 해제하기 때문에 단색 배경에 대한 방법입니다.

참고 사항: scrolingCache 반드시 false인 것은 .ListView의 애니메이션과 스크롤 속도가 느려집니다.

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

다음은 저에게 효과가 있었습니다.

myListView.setScrollingCacheEnabled(false);

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

또는

의 배경이 되지 않음listview.

속성 추가

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

언급URL : https://stackoverflow.com/questions/2833057/background-listview-becomes-black-when-scrolling

반응형