android - 如何在 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)))
推荐阅读
- javascript - 如何使用脚本编辑器 cooja 模拟器从 collect-view 访问 motes 信息?
- ethereum - 如何读取以太坊交易的数据字段
- c# - 如何在调用 buffer.Clear(); 后将名为 buffer 的对象列表添加到嵌套对象列表中而不影响我的值;
- android - Android layout_below 未显示
- php - 如果 PHP 文件太大,请在 POST 之前阻止上传
- c - Xcode包含路径无法识别头文件
- qt - C++ 和 QML:对象关系
- laravel - 拉拉维尔。如何在“FormRequest”中应用两个条件“required_if”,其中字段看起来像“books*pages*color”?
- expo - expo-camera 与 expo-barcode-scanner 的条码扫描性能
- javascript - 包含带有定义的单词的可用 txt 文件