お題
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)
これで上下左右任意にマージンを確保できそう