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);
    }
}

 

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