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
목록 항목을 채 웁니다. 방법 및 반환 .Override
isEnabled
false
@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
'Programing' 카테고리의 다른 글
신속한 이메일 주소 확인 방법? (0) | 2020.03.17 |
---|---|
str_replace를 사용하여 첫 번째 경기에서만 작동합니까? (0) | 2020.03.17 |
JavaScript에서 창 크기 조정 이벤트를 트리거하는 방법은 무엇입니까? (0) | 2020.03.17 |
옵션이있는 명령 줄에서 .sql 파일을 내보내고 가져 오는 방법은 무엇입니까? (0) | 2020.03.17 |
비동기 작업을 동 기적으로 대기하는 이유와 여기서 Wait ()가 프로그램을 정지시키는 이유 (0) | 2020.03.17 |