以下代码根本不创建分隔符:

override fun onCreate(savedInstanceState: Bundle?)
    {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_notifications)

        val titleList = mutableListOf<NotificationsItem>()
        titleList.add(NotificationsItem("Title 1", "Description is good!", true))
        titleList.add(NotificationsItem("Title 2", "Description is good!", true))
        titleList.add(NotificationsItem("Title 3", "Description is good!", false))
        titleList.add(NotificationsItem("Title 4", "Description is good!", false))
        titleList.add(NotificationsItem("Title 5", "Description is good!", true))
        titleList.add(NotificationsItem("Title 6", "Description is good!", true))
        titleList.add(NotificationsItem("Title 7", "Description is good!", false))
        titleList.add(NotificationsItem("Title 8", "Description is good!", true))
        titleList.add(NotificationsItem("Title 9", "Description is good!", false))
        titleList.add(NotificationsItem("Title 10", "Description is good!", true))
        titleList.add(NotificationsItem("Title 11", "Description is good!", false))
        titleList.add(NotificationsItem("Title 12", "Description is good!", false))


        val recycler = findViewById<RecyclerView>(R.id.recyclerNotifications)
        recycler.adapter = NotificationsAdapter(titleList)
        recycler.layoutManager = LinearLayoutManager(this)

        val dividerItemDecoration = DividerItemDecoration(recycler.getContext(), LinearLayoutManager(this).orientation)
        dividerItemDecoration.setDrawable(ColorDrawable(recycler.getContext().resources.getColor(R.color.orange)))
        recycler.addItemDecoration(dividerItemDecoration)
    }

这将产生以下输出:

enter image description here

如果我删除 colored颜色 更改,它将使用默认 colored颜色 :

val dividerItemDecoration = DividerItemDecoration(recycler.getContext(), LinearLayoutManager(this).orientation)
recycler.addItemDecoration(dividerItemDecoration)

enter image description here

为什么它不能适应 colored颜色 的变化?

推荐答案

要将自定义 colored颜色 设置为DividerItemDecoration,您需要创建一个新的ColorDrawable,覆盖两个公共方法getIntrinsicWidth()getIntrinsicHeight(),并分别返回可绘制对象的固有宽度和高度.

Java Example:

DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(recyclerView.getContext(), DividerItemDecoration.VERTICAL);
dividerItemDecoration.setDrawable(new ColorDrawable(ContextCompat.getColor(recyclerView.getContext(), android.R.color.holo_red_light)){
    @Override
    public int getIntrinsicWidth(){
        return getResources().getDisplayMetrics().widthPixels / getResources().getDisplayMetrics().densityDpi;
    }

    @Override
    public int getIntrinsicHeight(){
        return (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1f, getResources().getDisplayMetrics());
    }
});
recyclerView.addItemDecoration(dividerItemDecoration);

Kotlin Example:

val dividerItemDecoration = DividerItemDecoration(recyclerView.getContext(), DividerItemDecoration.VERTICAL)
dividerItemDecoration.setDrawable(object : ColorDrawable(ContextCompat.getColor(recyclerView.getContext(), android.R.color.holo_red_light)) {
    override fun getIntrinsicWidth(): Int {
        return resources.displayMetrics.widthPixels / resources.displayMetrics.densityDpi
    }
    
    override fun getIntrinsicHeight(): Int {
        return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1f, resources.displayMetrics).toInt()
    }
})
recyclerView.addItemDecoration(dividerItemDecoration)

Another way with 100:

使用MaterialDividerItemDecoration,您只需使用setDividerColorResource更改分隔符 colored颜色 ,如下面的Kotlin示例所示:

val dividerItemDecoration = MaterialDividerItemDecoration(recyclerView.context, DividerItemDecoration.VERTICAL)
dividerItemDecoration.setDividerColorResource(recyclerView.context, android.R.color.holo_red_light)
recyclerView.addItemDecoration(dividerItemDecoration)

Result:

divider

Android相关问答推荐

如何将Hilt添加到Android Studio中的Kotlin项目中?

无法理解Kotlin Coroutines and Flows中的J.C.编程行为

Android设备.Net Maui上的mp3文件列表

Android 14(Oneui 6)中的本地推送通知行为不一致

推断的类型是片段,但应为上下文

Lateinit变量结果始终以kotlin格式未初始化

判断文本视图是否为单行

更改选定的切换轨道 colored颜色

当提供非状态对象时,compose 如何进行重组

相机2问题:设置AE区域、AF区域和AWB区域.

需要在按钮 onclick 上从 string.xml 获取值. @Composable 调用只能在@Composable 函数的上下文中发生

具有数据库和升级潜力的移动应用程序开发(Android)供朋友使用

Android 设备断开连接后发送的 BLE 蓝牙数据

了解 Compose 声明性逻辑

如何解决 compose 中material 图标的由于接收器类型不匹配,以下候选者都不适用

如何在jetpack compose中通过lamda返回columnScope/RowScope

viewModel 的可变值状态不起作用

如何使用底页,启用和展开父交互

在开发过程中我应该把 mp4 文件放在哪里?

jetpack compose 中的可点击指示是什么?