前人未踏の領域へ アプリ開発編

Android, iOSアプリ開発に関する調査メモ置き場。ほとんどAndroid。はてなダイアリーから移行したため古い記事にはアプリ以外も含まれます。

マージン付きのdivider用drawableを作る

お題

RecyclerViewで使用するdividerの左側にマージンを確保したい。

対応

レイヤーリストとoffsetの組み合わせでできた。

とりあえず基本となるdividerを用意する(drawable/divider.xml などとする)

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <size
        android:width="1dp"
        android:height="1dp" />
    <solid android:color="@color/divider" />
</shape>

これをレイヤーリストの中にいれ、オフセットを確保する今回は72dp。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:left="72dp">
        <shape android:shape="rectangle">
            <size
                android:width="1dp"
                android:height="1dp" />
            <solid android:color="@color/divider" />
        </shape>
    </item>
</layer-list>

こいつをDividerItemDecorationにsetDrawableする

        val decoration = DividerItemDecoration(context, layoutManager.orientation)
        decoration.setDrawable(ContextCompat.getDrawable(context, R.drawable.divider))
        mListView.addItemDecoration(decoration)

これで上下左右任意にマージンを確保できそう