Programing

Android : listView 클릭시 강조 표시 비활성화

lottogame 2020. 3. 17. 08:30
반응형

Android : listView 클릭시 강조 표시 비활성화


listView 행을 터치 할 때 발생하는 주황색 하이라이트를 비활성화하고 싶습니다. 지금까지 내 XML에서 다음을 시도했습니다.

android:focusable="false"
android:focusableInTouchMode="false"
android:clickable="false"

추가 정보 : 사용자 가이 listView 객체의 화면을 터치 할 때 차이가 없도록하고 싶습니다.


이것을 XML에 추가하십시오.

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

그리고 문제의 경우 이것이 효과가있을 수 있습니다 (확실하지 않으며 더 나은 해결책이 있는지 모르겠습니다).

TextState에 ColorStateList적용 할 수 있습니다 .


RoflcoptrException의 대답은 트릭을 수행해야하지만 어떤 이유로 든 작동하지 않으므로 나를 위해 일한 솔루션을 게시하고 있습니다.

<ListView 
android:listSelector="@android:color/transparent" 
android:cacheColorHint="@android:color/transparent"
/>

주황색 하이라이트 효과는 ListView 스타일 입니다. 이 기사 는 listView 스타일을 재정의하는 방법에 대한 좋은 개요를 제공합니다.

기본적으로 현재 상태에 따라 다른 스타일 요소를 지정하는 선택기가 있습니다.

짧고 빠른 솔루션은 이것을 참조하십시오 https : //.com/a/12242564/185022


에서 의 ListView : 사용 안 함 초점 강조 ,

ListAdapter다음 코드를 사용하도록 설정하면

ListAdapter adapter = new SimpleCursorAdapter(MyList, Layout, c, 
                new String[] { "Name", "Score" }, to) 
{ 
    public boolean areAllItemsEnabled() 
    { 
        return false; 
    } 
    public boolean isEnabled(int position) 
    { 
        return false; 
    } 
}; 

이것은 BaseAdapter클래스 를 재정의합니다 . 또한 셀 사이의 흰색 테두리를 취소합니다.


이것을 listselector와 함께 XMl에 추가하십시오.

<ListView
android:cacheColorHint="@android:color/transparent"
android:listSelector="@android:color/transparent"/> 

당신이 사용하는 경우 ArrayAdapter또는 BaseAdapter목록 항목을 채 웁니다. 방법 및 반환 .OverrideisEnabledfalse

 @Override
  public boolean isEnabled (int position) {
    return false;
  }

가상 및 실제 기기에서 'Google'을 몇 번 테스트하고 테스트 한 결과 아래 코드가 작동하는 것을 알 수 있습니다.

ArrayAdapter<String> myList = new ArrayAdapter<String>(this, R.layout.list_item, strText) {
    public boolean isEnabled(int position) 
    { 
            return false; 
    } 
};

areAllItemsEnabled()부분을 생략했습니다 .


아무것도 나에게 도움이되지 않습니다.

transparent_drawable.xml:

<?xml version="1.0" encoding="utf-8"?>    
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#00000000"/>
</shape>

layout.xml:

android:listSelector="@drawable/transparent_drawable"

코드에서

listView.setSelector(getResources().getDrawable(R.drawable.transparent));

작고 투명한 이미지를 드로어 블 폴더에 추가합니다.

예 : transparent.xml

<?xml version="1.0" encoding="utf-8"?>    
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#00000000"/>
</shape>

저에게는 android:focusableInTouchMode="true"갈 길입니다. android:listSelector="@android:color/transparent"쓸모가 없습니다. 각 행에 많은 객체가 포함 된 사용자 정의 목록보기를 사용하고 있습니다.


다음을 추가하기 만하면됩니다. android:cacheColorHint="@android:color/transparent"


대안으로 :

listView.setSelector(android.R.color.transparent);

또는

listView.setSelector(new StateListDrawable());

이를 수행하는 빠르고 쉬운 방법이 있습니다.

private void OnItemSelected(object sender, SelectedItemChangedEventArgs e)
{
    //TODO
    ((ListView)sender).SelectedItem = null;
}

그것이 도움이되기를 바랍니다.)


단일 목록보기 항목에 대해 강조 표시를 비활성화하고 셀을 활성화 된 상태로 유지하려면 강조 표시를 비활성화하도록 해당 셀의 배경색을 설정하십시오.

예를 들어 셀 레이아웃에서 android:background="@color/white"


당신은 pos당신이 얻는 것을 얻을 수 있고 할 수 있습니다 onItemClick:

listView.setItemChecked(pos, false);

그것이 내가 아는 가장 좋은 방법입니다

참고 URL : https://stackoverflow.com/questions/2907335/android-disabling-highlight-on-listview-click

반응형