要在Android Kotlin中创建自定义可滚动的时间选择器,可以使用RecyclerView和自定义适配器来实现。以下是一个示例代码:
首先,创建一个名为TimePickerAdapter的自定义适配器类:
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
class TimePickerAdapter(private val timeList: List) :
RecyclerView.Adapter() {
private var selectedPosition = -1
inner class TimeViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val timeTextView: TextView = itemView.findViewById(R.id.timeTextView)
init {
itemView.setOnClickListener {
val position = adapterPosition
if (position != RecyclerView.NO_POSITION) {
selectedPosition = position
notifyDataSetChanged()
}
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TimeViewHolder {
val itemView = LayoutInflater.from(parent.context)
.inflate(R.layout.time_item, parent, false)
return TimeViewHolder(itemView)
}
override fun onBindViewHolder(holder: TimeViewHolder, position: Int) {
val currentTime = timeList[position]
holder.timeTextView.text = currentTime
if (selectedPosition == position) {
holder.timeTextView.setTextColor(holder.itemView.context.resources.getColor(R.color.selected_time))
} else {
holder.timeTextView.setTextColor(holder.itemView.context.resources.getColor(R.color.default_time))
}
}
override fun getItemCount(): Int {
return timeList.size
}
}
接下来,创建一个名为MainActivity的主活动类,并在其中设置RecyclerView和时间列表:
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
class MainActivity : AppCompatActivity() {
private lateinit var timeRecyclerView: RecyclerView
private lateinit var timeAdapter: TimePickerAdapter
private val timeList = listOf("09:00", "10:00", "11:00", "12:00", "13:00", "14:00", "15:00", "16:00")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
timeRecyclerView = findViewById(R.id.timeRecyclerView)
timeRecyclerView.layoutManager = LinearLayoutManager(this)
timeAdapter = TimePickerAdapter(timeList)
timeRecyclerView.adapter = timeAdapter
}
}
最后,创建一个名为time_item.xml的布局文件,定义时间选择器中每个时间项的外观:
确保在项目的res/values/colors.xml文件中定义selected_time和default_time颜色:
#FF0000
#000000
这样,你就可以在Android Kotlin中创建一个自定义的可滚动时间选择器了。