视图中的android RecyclerView StartPoint

时间:2019-04-08 06:35:15

标签: android android-recyclerview

我正在使用recyclerview配置UI。

下面是我要实现的UI的示例。

enter image description here

我想根据回收视图的起点将用户界面添加到范围之外,但是行为没有得到我想要的。

我希望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

enter image description here

0 个答案:

没有答案