code

Android: 목록에서 강조 표시 사용 안 함클릭 보기

starcafe 2023. 8. 21. 21:29
반응형

Android: 목록에서 강조 표시 사용 안 함클릭 보기

listView 행을 누를 때 나타나는 주황색 강조 표시를 사용하지 않도록 설정합니다.지금까지 xml에서 다음을 시도했습니다.

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

추가 정보:나는 사용자가 이 listView 객체의 화면을 터치할 때 차이가 나지 않기를 원합니다.

xml에 추가합니다.

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

문제에 대해서는 이 방법이 효과가 있을 수 있습니다(더 나은 솔루션이 있는지 잘 모르겠습니다).

텍스트 보기에 색상 상태 목록을 적용할 수 있습니다.

RoflcoptrException의 답변은 효과가 있어야 하지만, 어떤 이유로 저에게 효과가 없었습니다. 그래서 저에게 효과가 있었던 솔루션을 게시합니다. 누군가에게 도움이 되기를 바랍니다.

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

주황색 강조 표시 효과는 목록 보기의 스타일입니다.이 문서에서는 listView 스타일을 재정의하는 방법에 대한 개요를 제공합니다.

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

짧고 빠른 해결책은 이것을 참조하십시오. https://stackoverflow.com/a/12242564/185022

목록 보기에서: 포커스 강조 표시 사용 안 함:

설정할 때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클래스. 셀 사이의 흰색 테두리도 취소합니다.

목록 선택기와 함께 XML에도 추가합니다.효과가 있기를 바랍니다

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

사용 중인 경우ArrayAdapter또는BaseAdapter목록 항목을 채웁니다.OverrideisEnabled방법과 반환false.

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

가상 장치와 실제 장치에서 몇 번 '구글'하고 테스트한 결과 아래 코드가 작동합니다.

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

반응형