Android ListView의 하단 구분선 제거


94

나는 고정 된 높이가 ListView있습니다. 목록 항목 사이에 구분선이 있지만 마지막 목록 항목 뒤에 구분선도 표시됩니다.

의 마지막 항목 뒤에 구분선을 표시하지 않는 방법이 ListView있습니까?

답변:


183

android:footerDividersEnabled="false" ListView 설명에 추가 하기 만하면 됩니다.


29
이것은 4.4.2부터 더 이상 작동하지 않는 것 같습니다. 내 많은 테스트 장치에서 문자 그대로 동일한 앱을 실행할 수 있으며 (2.3.7에서 4.4.2까지) KitKat이 효과가없는 유일한 앱입니다. 아이디어가 있습니까? 내 ListView에 바닥 글이나 머리글을 추가하지 않고 두 장치 (Nexus 5 및 HTC One M8)에서이를 재현했습니다.
Charles Madere 2014

11
@ScootrNova 4.4.4를 사용하고 있으며 listview의을 설정 layoutHeight="wrap_content"하면 하단 구분선이 사라집니다.
Erhannis 2014

1
사용 배경 = @android : 컬러 / 투명, 나를 위해 그것을 해결
STEF

이 솔루션을 Android 5.1 및 7.0에서 시도했으며 완벽하게 작동합니다! 고마워요.
tomalf2

83

@ScootrNova가 말했듯이 이것은 android 4.4.x에서 다르게 동작하는 것 같습니다 (일명 버그가 있음) (문제가 언제 도입되었는지 정확히 모릅니다)

이것은 4.4.x에서 바닥 글이 뷰 외부에 그려 지지만 패딩에 클립하면이를 드러내는 4.4.x에서 + - 를 사용 하는 특정 사례 와 관련이 있습니다.paddingclipToPadding="false"

내가 사용한 해결책은 android:overScrollFooter어떻게 든 작동 하는 바닥 글 오버 스크롤 ( )을 투명하게 설정하는 것입니다 ...

내 최종 솔루션 ( android:footerDividersEnabled역 호환성을 위해 유지됨) :

<ListView
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="@dimen/activity_horizontal_margin"
    android:divider="@color/divider"
    android:dividerHeight="1px"
    android:clipToPadding="false"
    android:scrollbarStyle="outsideInset"
    android:overScrollFooter="@android:color/transparent"
    android:footerDividersEnabled="false"
    />

4.1.1을 실행하는 HTC One X, 4.4.4를 실행하는 Nexus 5 및 4.4.2를 실행하는 Samsung Galaxy S5에서 테스트되었습니다 (@ Dallas187 덕분에). Lollipop도 작동하는 것 같습니다. (댓글 감사합니다!)


1
그냥 4.4.2을 실행하는 삼성 갤럭시 S5에이 솔루션의 작동을 확인
Dallas187

1
추가 android:overScrollFooter는 나를 위해 트릭을했습니다. 5.0.2 및 5.1에서 작업.
Edison Spencer

실제로, 그리고 나는 당신이 android:footerDividersEnabled="false"다시 compat 이 필요할 것이라고 믿습니다
Sam

18

코드로이 작업을 수행하려면 다음과 같습니다.

listView.setFooterDividersEnabled(false);

ListFragment를 사용하는 경우 다음과 같이 목록보기를 얻을 수 있습니다.

listFragment.getListView().setFooterDividersEnabled(false);

이것이 구글에서 # 1로 나오기 때문에 댓글을 달았습니다.


2
코드 주셔서 감사합니다. XML 기반 솔루션 만있을 때 슬퍼합니다! iOS에서 Android로 앱을 포팅하고 있는데, 지금까지 모든 것을 XML 기반 레이아웃으로 변환하는 것보다 코드에서이 모든 작업을 수행하는 것이 훨씬 빠르다고 생각합니다 (처음에 코드에서 모든 iOS UI를 정의 했으므로 ). 나는 오늘 : 모든 XML 물건 주위에 내 머리를 얻을 필요가 있지만 것이다 일일 가정
헤르 Grumps

Pixel API 25에서 나를 위해 작동하지 않지만 Annada의 제안만이 작동하는 것 같습니다.
Tbadams

12

롤리팝 장치에서 아래 줄이 작동하지 않는 것 같습니다.

listView.setFooterDividersEnabled(false);

따라서 목록의 마지막 항목 뒤의 구분선을 제거하려면 아래 코드를 사용해야합니다.

listView.setOverscrollFooter(new ColorDrawable(Color.TRANSPARENT));

이것은 받아 들여진 대답이어야합니다. 간단한 솔루션, 첫 번째 샷을 위해 일했습니다.
사마

0

background = @android : color / transparent를 사용하십시오. 완벽하게 작동합니다. 행 레이아웃의 배경을 계속 사용할 수 있습니다.

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