如何在RecyclerView.ItemDecoration()中使用dp而不是像素



我有一个自定义类在我的RecyclerView中使用偏移量。

class SpacesItemDecoration(private var space: Int) : RecyclerView.ItemDecoration() {
override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State) {
super.getItemOffsets(outRect, view, parent, state)
outRect.bottom = space
}
}

然后我在代码中设置偏移量,如下所示:

addItemDecoration(SpacesItemDecoration(25))

它可以工作,但它以像素为单位设置偏移。我应该如何使用dp而不是像素?为什么谷歌更喜欢在这里使用像素?它已经被弃用了。

通过这种方法,您应该首先将dp转换为像素,然后设置

fun Context.dpToPixel(dp: Float): Float {
return dp * (resources.displayMetrics.densityDpi.toFloat() / DisplayMetrics.DENSITY_DEFAULT)
}

通过这个

addItemDecoration(SpacesItemDecoration(dpToPixel(25f)))

最新更新