Android:时间轴动态记录安排事情,24小时制,按照时间先后排序

做出来的效果是类似这样子,长截屏不知道为啥只到20点就滚不下去了,内容显示就简单的弄了一个TextView,需要自定义的,可以替换一下,比如封装一个插好控件的RelativeLayout,生成的时候new一个插入数据就行,

显示控件的长高度,和时间长度有关,1个小时就会填满一个小时的位置,20分钟就是1/3,40分钟就是2/3,以此类推,显示位置和开始时间有关,总长度从0点到24小时。

最开始想法是想说用RecyclerView做,但是,实在做不出来,百度的又是另一种时间轴,一根线那种。最后采用把24小时先放入NestedScrollView,ScrollView里,然后动态生成控件,计算高度,生成关系,添加进ViewGroup,直接上layout代码

<android.support.v4.widget.NestedScrollView
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="@color/white"
        app:layout_constraintBottom_toTopOf="@+id/bt_order"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/constraint_layout2">
        
        <android.support.constraint.ConstraintLayout
            android:id="@+id/cl_content"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <View
                android:id="@+id/view_time1"
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_marginTop="60dp"
                android:background="@color/gray_cc"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />


            <View
                android:id="@+id/view_time2"
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_marginTop="120dp"
                android:background="@color/gray_cc"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <View
                android:id="@+id/view_time3"
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_marginTop="180dp"
                android:background="@color/gray_cc"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <View
                android:id="@+id/view_time4"
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_marginTop="240dp"
                android:background="@color/gray_cc"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <View
                android:id="@+id/view_time5"
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_marginTop="300dp"
                android:background="@color/gray_cc"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <View
                android:id="@+id/view_time6"
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_marginTop="360dp"
                android:background="@color/gray_cc"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <View
                android:id="@+id/view_time7"
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_marginTop="420dp"
                android:background="@color/gray_cc"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <View
                android:id="@+id/view_time8"
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_marginTop="480dp"
                android:background="@color/gray_cc"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <View
                android:id="@+id/view_time9"
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_marginTop="540dp"
                android:background="@color/gray_cc"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <View
                android:id="@+id/view_time10"
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_marginTop="600dp"
                android:background="@color/gray_cc"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <View
                android:id="@+id/view_time11"
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_marginTop="660dp"
                android:background="@color/gray_cc"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <View
                android:id="@+id/view_time12"
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_marginTop="720dp"
                android:background="@color/gray_cc"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <View
                android:id="@+id/view_time13"
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_marginTop="780dp"
                android:background="@color/gray_cc"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <View
                android:id="@+id/view_time14"
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_marginTop="840dp"
                android:background="@color/gray_cc"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <View
                android:id="@+id/view_time15"
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_marginTop="900dp"
                android:background="@color/gray_cc"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <View
                android:id="@+id/view_time16"
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_marginTop="960dp"
                android:background="@color/gray_cc"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <View
                android:id="@+id/view_time17"
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_marginTop="1020dp"
                android:background="@color/gray_cc"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <View
                android:id="@+id/view_time18"
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_marginTop="1080dp"
                android:background="@color/gray_cc"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <View
                android:id="@+id/view_time19"
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_marginTop="1140dp"
                android:background="@color/gray_cc"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <View
                android:id="@+id/view_time20"
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_marginTop="1200dp"
                android:background="@color/gray_cc"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <View
                android:id="@+id/view_time21"
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_marginTop="1260dp"
                android:background="@color/gray_cc"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <View
                android:id="@+id/view_time22"
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_marginTop="1320dp"
                android:background="@color/gray_cc"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <View
                android:id="@+id/view_time23"
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_marginTop="1380dp"
                android:background="@color/gray_cc"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <View
                android:id="@+id/view_time24"
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_marginTop="1440dp"
                android:background="@color/gray_cc"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <View
                android:id="@+id/view_time25"
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:layout_marginTop="1500dp"
                android:background="@color/gray_cc"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <TextView
                android:id="@+id/text1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="10dp"
                android:text="00:00"
                android:textColor="@color/black_33"
                android:textSize="14sp"
                app:layout_constraintBottom_toBottomOf="@+id/view_time1"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <TextView
                android:id="@+id/text2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="10dp"
                android:text="01:00"
                android:textColor="@color/black_33"
                android:textSize="14sp"
                app:layout_constraintBottom_toBottomOf="@+id/view_time2"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="@+id/view_time1" />

            <TextView
                android:id="@+id/text3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="10dp"
                android:text="02:00"
                android:textColor="@color/black_33"
                android:textSize="14sp"
                app:layout_constraintBottom_toBottomOf="@+id/view_time3"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="@+id/view_time2" />

            <TextView
                android:id="@+id/text4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="10dp"
                android:text="03:00"
                android:textColor="@color/black_33"
                android:textSize="14sp"
                app:layout_constraintBottom_toBottomOf="@+id/view_time4"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="@+id/view_time3" />

            <TextView
                android:id="@+id/text5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="10dp"
                android:text="04:00"
                android:textColor="@color/black_33"
                android:textSize="14sp"
                app:layout_constraintBottom_toBottomOf="@+id/view_time5"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="@+id/view_time4" />

            <TextView
                android:id="@+id/text6"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="10dp"
                android:text="05:00"
                android:textColor="@color/black_33"
                android:textSize="14sp"
                app:layout_constraintBottom_toBottomOf="@+id/view_time6"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="@+id/view_time5" />

            <TextView
                android:id="@+id/text7"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="10dp"
                android:text="06:00"
                android:textColor="@color/black_33"
                android:textSize="14sp"
                app:layout_constraintBottom_toBottomOf="@+id/view_time7"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="@+id/view_time6" />

            <TextView
                android:id="@+id/text8"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="10dp"
                android:text="07:00"
                android:textColor="@color/black_33"
                android:textSize="14sp"
                app:layout_constraintBottom_toBottomOf="@+id/view_time8"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="@+id/view_time7" />

            <TextView
                android:id="@+id/text9"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="10dp"
                android:text="08:00"
                android:textColor="@color/black_33"
                android:textSize="14sp"
                app:layout_constraintBottom_toBottomOf="@+id/view_time9"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="@+id/view_time8" />

            <TextView
                android:id="@+id/text10"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="10dp"
                android:text="09:00"
                android:textColor="@color/black_33"
                android:textSize="14sp"
                app:layout_constraintBottom_toBottomOf="@+id/view_time10"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="@+id/view_time9" />

            <TextView
                android:id="@+id/text11"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="10dp"
                android:text="10:00"
                android:textColor="@color/black_33"
                android:textSize="14sp"
                app:layout_constraintBottom_toBottomOf="@+id/view_time11"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="@+id/view_time10" />

            <TextView
                android:id="@+id/text12"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="10dp"
                android:text="11:00"
                android:textColor="@color/black_33"
                android:textSize="14sp"
                app:layout_constraintBottom_toBottomOf="@+id/view_time12"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="@+id/view_time11" />

            <TextView
                android:id="@+id/text13"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="10dp"
                android:text="12:00"
                android:textColor="@color/black_33"
                android:textSize="14sp"
                app:layout_constraintBottom_toBottomOf="@+id/view_time13"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="@+id/view_time12" />

            <TextView
                android:id="@+id/text14"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="10dp"
                android:text="13:00"
                android:textColor="@color/black_33"
                android:textSize="14sp"
                app:layout_constraintBottom_toBottomOf="@+id/view_time14"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="@+id/view_time13" />

            <TextView
                android:id="@+id/text15"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="10dp"
                android:text="14:00"
                android:textColor="@color/black_33"
                android:textSize="14sp"
                app:layout_constraintBottom_toBottomOf="@+id/view_time15"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="@+id/view_time14" />

            <TextView
                android:id="@+id/text16"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="10dp"
                android:text="15:00"
                android:textColor="@color/black_33"
                android:textSize="14sp"
                app:layout_constraintBottom_toBottomOf="@+id/view_time16"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="@+id/view_time15" />

            <TextView
                android:id="@+id/text17"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="10dp"
                android:text="16:00"
                android:textColor="@color/black_33"
                android:textSize="14sp"
                app:layout_constraintBottom_toBottomOf="@+id/view_time17"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="@+id/view_time16" />

            <TextView
                android:id="@+id/text18"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="10dp"
                android:text="17:00"
                android:textColor="@color/black_33"
                android:textSize="14sp"
                app:layout_constraintBottom_toBottomOf="@+id/view_time18"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="@+id/view_time17" />

            <TextView
                android:id="@+id/text19"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="10dp"
                android:text="18:00"
                android:textColor="@color/black_33"
                android:textSize="14sp"
                app:layout_constraintBottom_toBottomOf="@+id/view_time19"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="@+id/view_time18" />

            <TextView
                android:id="@+id/text20"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="10dp"
                android:text="19:00"
                android:textColor="@color/black_33"
                android:textSize="14sp"
                app:layout_constraintBottom_toBottomOf="@+id/view_time20"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="@+id/view_time19" />

            <TextView
                android:id="@+id/text21"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="10dp"
                android:text="20:00"
                android:textColor="@color/black_33"
                android:textSize="14sp"
                app:layout_constraintBottom_toBottomOf="@+id/view_time21"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="@+id/view_time20" />

            <TextView
                android:id="@+id/text22"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="10dp"
                android:text="21:00"
                android:textColor="@color/black_33"
                android:textSize="14sp"
                app:layout_constraintBottom_toBottomOf="@+id/view_time22"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="@+id/view_time21" />

            <TextView
                android:id="@+id/text23"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="10dp"
                android:text="22:00"
                android:textColor="@color/black_33"
                android:textSize="14sp"
                app:layout_constraintBottom_toBottomOf="@+id/view_time23"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="@+id/view_time22" />

            <TextView
                android:id="@+id/text24"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="10dp"
                android:text="23:00"
                android:textColor="@color/black_33"
                android:textSize="14sp"
                app:layout_constraintBottom_toBottomOf="@+id/view_time24"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="@+id/view_time23" />

            <TextView
                android:id="@+id/text25"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="10dp"
                android:text="24:00"
                android:textColor="@color/black_33"
                android:textSize="14sp"
                app:layout_constraintBottom_toBottomOf="@+id/view_time25"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="@+id/view_time24" />

        </android.support.constraint.ConstraintLayout>

    </android.support.v4.widget.NestedScrollView>

这里NestedScrollView里采用的是一个ConstraintLayout,最近喜欢上了这个控件,学习的话可以参考鸿洋大神的教程:

https://blog.csdn.net/lmj623565791/article/details/78011599?utm_source=tuicool&utm_medium=referral

上面那段代码,很简单,就一个一个排下去,排出24小时,但需要注意的是,每一个控件,都需要给他设置id,因为我开始写的时候,不是每一个控件都有对应的关系,所以就没全部设置id,后来出了点问题,底下会讲到,还有就是间隔,每一段时间间隔,我是设置了60dp,用做分隔线的View和View之间高度都是60dp,如果怕计算错误也可以一个关联着一个,用layout_constraintTop_toBottomOf="上一个分隔线ID",margin_top=60dp。一个小时不设置60dp的话,底下计算1分钟,1小时所占的高度会有所差别。

把上面代码拷贝在对应的layout里,就能看到效果了,接下来是java代码:

首先是动态显示控件内容的数据类型,需要一个开始时间,一个结束时间,一个内容,如果你需要图片的话,可以带图片链接,用Glide显示,我这里的数据类型是这样的:

//删了一些没必要的数据
public class MeetingPlanData {
    public long meetingStartTime;
    public long meetingEndTime;
    public String meetingTheme;//会议主题
}

假设,我从服务器中获取了一个列表数据List<MeetingPlanData> meetingPlanData;先放着,我们先做一些准备工作:

//因为设置宽高,以及距离都是px,所以需要一个方法把dp转成px
public class AppUtils {
    /**
     * 根据手机的分辨率从 dp 的单位 转成为 px(像素)
     */
    public static int dip2px(Context context, float dpValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dpValue * scale + 0.5f);
    }
}

接下来是在activity中:

//全局变量
private int oneHourPx60;//一个小时高度是60dp,转换成像素
private int oneMimutePx1;//一分钟高度是1dp,转化成像素
private int width;
private SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm");

//放在onCreate里
private void initData() {
    oneHourPx60 = AppUtils.dip2px(this, 60);//假如你不是60dp就换掉
    oneMimutePx1 = AppUtils.dip2px(this, 1);//这个用你的1小时的高度除60就行了
    //显示控件宽度,不是必须得,假如你的宽度是动态的,然后距离两边多少也可以
    width = AppUtils.dip2px(this, 250);
}


//生成放入控件的代码,并添加进ConstraintLayout里
private void setNewTextView(MeetingPlanData planData) {
    //生成一个放入的控件
    TextView textView = new TextView(this);
    //给控件赋予一个id
    textView.setId(View.generateViewId());
    //设置控件属性,这个不用照抄,自己喜欢什么弄什么就行,显示什么背景什么都自己定
    textView.setBackground(getResources().getDrawable(R.color.pink_be));
    textView.setTextColor(getResources().getColor(R.color.black_66));
    textView.setText(planData.meetingTheme + "\n" + timeFormat.format(new                                     
                       Date(planData.meetingStartTime)) + "-"
                        + timeFormat.format(new Date(planData.meetingEndTime)));
    //底下获取Calendar,为了拿到一天的时间
    //获取开始时间的Calendar,这个东西很强大,能单独设置年月日时分秒为多少
    Calendar calendar1 = Calendar.getInstance();
    calendar1.setTimeInMillis(planData.meetingStartTime);
    //获取结束时间的Calendar
    Calendar calendar2 = Calendar.getInstance();
    calendar2.setTimeInMillis(planData.meetingEndTime);
    //设置高度,算出他们直接差了多少分钟,然后乘以分钟所占的像素
    int height = (int) ((calendar2.getTimeInMillis() - calendar1.getTimeInMillis()) / 
            60000 * oneMimutePx1);
    //动态在ConstraintLayout里面加入控件,需要ConstraintSet,使用这个,就必须所有控件都有id
    //这就是上面为什么把ConstraintLayout里所有控件都加了id的原因
    ConstraintSet constraintSet = new ConstraintSet();
    //把显示内容添加进去
    clContent.addView(textView);
    //计算距离顶部的高度,很好理解,比如说13点20分,那就是距离0点有13个小时,再加上20分钟的高度
    int marginTop = calendar1.get(Calendar.HOUR_OF_DAY) * oneHourPx60 +                     
                      calendar1.get(Calendar.MINUTE) * oneMimutePx1;
    //设置显示内容宽度
    constraintSet.constrainWidth(textView.getId(), width);
    constraintSet.clone(clContent);
    constraintSet.constrainHeight(textView.getId(), height);
    //设置显示位置,这个是水平居中,假如需要偏左偏右,就设置下margin,参考最后一个connect
    constraintSet.connect(textView.getId(),ConstraintSet.END, 
                           ConstraintSet.PARENT_ID,ConstraintSet.END);
    constraintSet.connect(textView.getId(),ConstraintSet.START, 
                          ConstraintSet.PARENT_ID,ConstraintSet.START);
    constraintSet.connect(textView.getId(),ConstraintSet.TOP, 
                           ConstraintSet.PARENT_ID,ConstraintSet.TOP,marginTop);
    //应用
    constraintSet.applyTo(clContent);
    }

显示list,放在获取数据之后

if (meetingPlanData != null && meetingPlanData.size() != 0) {
    for (MeetingPlanData data : meetingPlanData) {
        setNewTextView(data);
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章