web-dev-qa-db-ja.com

Android ListViewの下の仕切りを削除します

固定高さListViewがあります。リスト項目間に仕切りがありますが、最後のリスト項目の後に仕切りも表示されます。

ListViewの最後のアイテムの後に仕切りを表示しない方法はありますか?

93
mkso

ListViewの説明にAndroid:footerDividersEnabled="false"を追加するだけです

183
Alex.Semeniuk

@ScootrNovaが言ったように、これはAndroid 4.4.x(問題がいつ導入されたか正確にはわからない)

これは、specificpadding + clipToPadding="false"を使用する場合に関連しています-4.4.xでは、フッターはビューの外側に描画されますが、パディングへのクリップはそれを示します。

私が使用した解決策は、フッターのオーバースクロール(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も動作しているようです。 (コメント者に感謝!)

80
Sam

コードでこれを行いたい場合は、次のとおりです。

listView.setFooterDividersEnabled(false);

また、ListFragmentを使用している場合は、次の方法でリストビューを取得できます。

listFragment.getListView().setFooterDividersEnabled(false);

これはグーグルで1位になったのでコメントしました

18
tmho

以下の行は、lollypopデバイスでは機能しないようです。

listView.setFooterDividersEnabled(false);

したがって、リストの最後の項目の後の区切り線を削除するには、以下のコードを使用する必要があります。

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

Background = @Android:color/transparentを使用します。完全に動作します。行レイアウトの背景を引き続き使用できます

0
stef