複雑なアイテムの背景を持つListViewを追加するには、追加する必要があります。上下の角が偶数/奇数と丸みを帯びている場合が異なります。次のようになります。
私はこれらすべてをレベルリストを介して実装しましたが、もう1つやりたいことがあります。これで、一番下の項目が画面の下部近くにあります。スペースを追加することをお勧めします。
ListViewに下マージンを追加したくありません。最後のアイテムにのみマージンが必要です。
私がこれを行うために見る方法:
フッター
一種のハック–空のTextViewを持つフッターをListViewに追加します。ただし、フッターは非常に不安定なものであり、通常、notifyDataSetChangedの後に消え、元に戻す方法はありません。
透明ピクセルの画像
デザイナーに、下部の背景リソースに透明なピクセルを追加するように依頼しました。残念ながら、この場合、垂直方向のセンタリングは完全に壊れています。たとえば、次のような9patchがあります。
そしてこのようなレイアウト:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<!-- View with background with transparent pixels on bottom -->
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"
android:id="@+id/item"
android:background="@drawable/some_bgr"
android:padding="10dp"
>
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1"
android:text="Title"
android:layout_gravity="center"
android:textSize="18sp"
/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="Detail"
android:layout_gravity="center"
android:textSize="18sp"
/>
</LinearLayout>
<!-- Just for marking place took by view -->
<FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"
android:layout_below="@id/item"
android:background="#88ff55"
/>
</RelativeLayout>
結果:
ご覧のとおり、センタリングは機能していません。残念ながら。(ところで、この9パッチをTextViewの背景として指定すると、センタリングがうまく機能します。これを説明する記事を知っている場合は、私に知らせてください。)
アダプタ実装の最後の項目に下マージンを追加します
それはうまくいくはずですが、理由は不明ですが、それでもうまくいきません。コード内のディメンションを変更するのが好きではないので、この方法は好きではありません。
そう
すでに想像上の方法があります。特定のビットマップとマージンを使用してXMLドローアブルを作成します。ドローアブルの概念によれば、それは可能であるはずですが、実装が見つかりません。誰かが知っているかもしれませんか?
他のアイデアはありますか?