【发布时间】:2020-09-13 00:06:44
【问题描述】:
我想在每一行创建一个具有不同颜色的spiner,我知道有很多类似于我的问题的解释,但它们都是用Java编写的,对我来说很复杂,我执行了这些步骤。
我的代码
val lista = listOf<Mood>(
Mood(resources.getColor(R.color.blue, null), "Color1"),
Mood(resources.getColor(R.color.purple, null), "Color2"),
Mood(resources.getColor(R.color.green, null), "Color3"),
Mood(resources.getColor(R.color.darkred, null), "Color4")
)
val adaptador = MoodArrayAdapter(this, lista)
spinner1.adapter = adaptador
spinner1.onItemSelectedListener = object :
AdapterView.OnItemSelectedListener {
override fun onItemSelected(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) {
when (spinner1.selectedItem.toString()) {
"Color1" -> textView.setBackgroundResource(R.color.blue)
"Color2" -> textView.setBackgroundResource(R.color.purple)
"Color3" -> textView.setBackgroundResource(R.color.green)
"Color4" -> textView.setBackgroundResource(R.color.darkred)
}
}
override fun onNothingSelected(p0: AdapterView<*>?) {
TODO("Not yet implemented")
}
}
我想以这种方式创建我的微调器
【问题讨论】:
-
检查 this Kotlin 的示例。使用数据模型将颜色传递为
backgroundColor,并在示例中使用的微调器的项目布局中将根布局分配为rootLayout,然后在Adapter的createView()中,设置传递的颜色数组的各自项目到rootLayout为view.rootLayout.setBackgroundColor(mood.backgroundColor)。这就是您所需要的,您可以根据需要进一步定制解决方案,首先按照我告诉您的方式实施它,然后您就会知道该做什么以及如何做。 -
我创建了一个叫spinner的values资源文件,在constraintlayout比这个create默认我已经赋值
android: id = "@ + id / rootLayout" android: background = "@ color / colorPrimaryDark"最后在private fun createView(position: Int, recycledView: View ?, parent: ViewGroup): View我把这行代码@987654334 @但我红了backgroundColor如果我错了,我很抱歉并请求您的大力帮助 -
默认情况下。您不必像在此处所做的那样对颜色资源进行硬编码:
android:background= "@color/colorPrimaryDark"。您只需在CreateView()中设置颜色。接下来,您如何将这些值添加到数据类中?添加代码,您可能只传递一种颜色:红色。你要做的是你必须通过不同的颜色和每个不同的值来获得不同的颜色。并在问题中添加代码并通过评论通知我。 -
分享代码,因为我认为您将颜色分配给微调器本身,而不是项目行。再次检查链接,您必须设置每行根布局的背景颜色,显示为here。
-
我已经添加了我的代码,其余代码和教程一样
标签: java android kotlin spinner android-spinner