Я работаю над настройкой пользовательского интерфейса с помощью recyclerview.
Ниже приведен пример пользовательского интерфейса, который я хотел бы реализовать.
Я хотел бы добавить пользовательский интерфейс вне диапазона на основе начальной точки представления рециркуляции, но поведение не соответствует желаемому.
Я хочу, чтобы текст в NowTime и PM 12 был сосредоточен вокруг StartPoint.
Но я не понимаю, как с этим справиться.
Поделиться примером кода. Спасибо за вашу помощь.
item_times4.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textview_now_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="11sp"
android:textColor="#aaaaaa"
android:text="NowTime"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/view_now_time_divider"/>
<View
android:id="@+id/view_now_time_divider"
android:layout_width="1dp"
android:layout_height="10dp"
android:background="#cccccc"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@id/textview_now_time"/>
<View
android:id="@+id/view_divider"
android:layout_width="0dp"
android:layout_height="4dp"
android:background="#0078ff"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintBottom_toBottomOf="@id/view_now_time_divider"/>
<TextView
android:id="@+id/textview_time_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="PM 12"
android:textSize="12sp"
app:layout_constraintStart_toStartOf="@id/view_divider"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/view_divider"/>
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.kt
package com.example.recyclerviewexample
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import kotlinx.android.synthetic.main.activity_main.*
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.GridLayoutManager
import kotlinx.android.synthetic.main.activity_main1.*
class MainActivity : AppCompatActivity() {
private val times: ArrayList<String> = ArrayList()
// private val times2: ArrayList<String> = ArrayList()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main1)
addTimes()
// addTimes2()
val myLayoutManager = GridLayoutManager(this, 19)
recyclerview_times.layoutManager = myLayoutManager
recyclerview_times.adapter = TimeAdapter(times, this)
}
/*
fun addTimes2() {
animals2.add("9")
animals2.add("10")
animals2.add("11")
animals2.add("12")
animals2.add("13")
animals2.add("14")
animals2.add("15")
animals2.add("16")
animals2.add("17")
animals2.add("18")
}
*/
fun addTimes() {
times.add("9")
times.add("9:30")
times.add("10")
times.add("10:30")
times.add("11")
times.add("11:30")
times.add("12")
times.add("12:30")
times.add("13")
times.add("13:30")
times.add("14")
times.add("14:30")
times.add("15")
times.add("15:30")
times.add("16")
times.add("16:30")
times.add("17")
times.add("17:30")
times.add("18")
}
}
TimeAdapter.kt
package com.example.recyclerviewexample
import android.content.Context
import android.graphics.Color
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.item_times3.view.*
class TimeAdapter(private val items: ArrayList<String>, private val context: Context) :
RecyclerView.Adapter<ViewHolder>() {
override fun getItemCount(): Int {
return items.size
}
// Inflates the item views
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return ViewHolder(LayoutInflater.from(context).inflate(R.layout.item_times4, parent, false))
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
if (minToVisibility(items[position])) {
holder?.tvTimeName?.visibility = View.GONE
} else {
holder?.tvTimeName?.text = items.get(position)
}
if (position % 2 == 0) {
holder?.divider?.setBackgroundColor(Color.parseColor("#e8e8e8"))
}
}
}
private fun minToVisibility(time: String): Boolean {
return when (time.contains(":")) {
true -> true
else -> false
}
}
class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
val divider = view.view_divider
val tvTimeName = view.textview_time_name
}
ScreenShot