亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

Kotlin超簡單實現StepView的方法

2024-07-21 23:03:51
字體:
來源:轉載
供稿:網友

TimeLineStepView

支持時間軸和StepView,三種布局,支持水平布局,垂直布局和自定義布局,截圖如下

Kotlin,StepView

Kotlin,StepView

Kotlin,StepView

添加依賴

implementation 'com.joketng:TimeLineStepView:1.0.1'

使用方法

在布局文件中添加TimeLineStepView

<com.joketng.timelinestepview.view.TimeLineStepView    android:id="@+id/rvVertical"    android:layout_width="match_parent"    android:layout_height="wrap_content"    app:lineWidth="3dp"    app:markSize="10dp"    android:paddingStart="20dp"    app:markStart="@drawable/shape_circle_orange"    app:layoutType="right"    />

在代碼中調用

//OrientationShowType對應三種布局方式//OrientationShowType.TIMELINE(時間軸方式)//OrientationShowType.CENTER_VERTICAL(垂直方式)//OrientationShowType.CENTER_HORIZONTAL(水平方式,支持左右滑動)rvVertical.initData(listContent, OrientationShowType.CENTER_VERTICAL,        object : TimeLineStepView.OnInitDataCallBack{          override fun onBindDataViewHolder(holder: TimeLineStepAdapter.CustomViewHolder, position: Int) {                      }          override fun createCustomView(leftLayout: ViewGroup, rightLayout: ViewGroup, holder: TimeLineStepAdapter.CustomViewHolder) {             //LayoutInflater.from(context).inflate(R.layout.item_add_left_view, leftLayout, true)             //LayoutInflater.from(context).inflate(R.layout.item_add_right_view, rightLayout, true)          }        })        .setLayoutType(type)//設置布局顯示的樣式左邊:LayoutType.LEFT,右邊:LayoutType.RIGHT,左右:LayoutType.ALL        //設置stepview進度激活的mark圖標        .setMarkActive(ContextCompat.getDrawable(context,R.drawable.shape_dot_orange)!!)        //設置stepview進度沒激活的mark圖標        .setMarkInActive(ContextCompat.getDrawable(context,R.drawable.shape_dot_gray)!!)        //設置stepview當前進度點的mark圖標        .setMarkCurrent(ContextCompat.getDrawable(context,R.drawable.shape_current)!!)        //設置stepview第一個mark的圖標        .setMarkStart(ContextCompat.getDrawable(context,R.drawable.shape_circle_orange)!!)        //設置stepview最后一個mark的圖標        .setMarkEnd(ContextCompat.getDrawable(context,R.drawable.shape_circle_orange)!!)        //設置stepview線的寬度        .setLineWidth(context.dipc(2))        //設置stepview進度激活時線的顏色        .setLineActiveColor(ContextCompat.getColor(context,R.color.c_main_orange))        //設置stepview進度沒有激活時線的顏色        .setLineInActiveColor(ContextCompat.getColor(context,R.color.c_main_gray))        //設置是否需要自定義布局(此時將createCustomView中的注釋打開將自定義布局傳入)        .setIsCustom(true)

listContent的取值為 mutableListOf(),當存在自定義布局的時候,listContent中添加的實體需要繼承BaseBean這個實體,如果不需要自定義布局,可以直接添加實體BaseBean

listContent.add(BaseBean(leftTitle = "11-11", leftTime = "08:30", rightTitle = "訂單提交成功", rightTime = "訂單提交成功描述", timeLineState = TimeLineState.ACTIVE))    listContent.add(BaseBean(leftTitle = "11-11", leftTime = "08:31", rightTitle = "訂單付款成功", rightTime = "訂單付款成功描述", timeLineState = TimeLineState.ACTIVE))    listContent.add(BaseBean(leftTitle = "11-11", leftTime = "10:00", rightTitle = "倉庫已經接單", rightTime = "倉庫已經接單描述", timeLineState = TimeLineState.ACTIVE))    listContent.add(BaseBean(leftTitle = "11-11", leftTime = "10:30", rightTitle = "倉庫處理中", rightTime = "倉庫處理中描述", timeLineState = TimeLineState.ACTIVE))    listContent.add(BaseBean(leftTitle = "11-11", leftTime = "11:00", rightTitle = "已出庫", rightTime = "已出庫描述", timeLineState = TimeLineState.ACTIVE))    listContent.add(BaseBean(leftTitle = "11-11", leftTime = "11:30", rightTitle = "已發貨", rightTime = "已發貨描述", timeLineState = TimeLineState.CURRENT))    listContent.add(BaseBean(leftTitle = "11-11", leftTime = "16:00", rightTitle = "已攬件", rightTime = "已攬件描述", timeLineState = TimeLineState.INACTIVE))    listContent.add(BaseBean(leftTitle = "11-11", leftTime = "16:30", rightTitle = "運輸中", rightTime = "運輸中描述", timeLineState = TimeLineState.INACTIVE))

BaseBean的五個參數前四個為控件的文本,前四個參數不傳的話該控件就不會顯示,最后一個TimeLineState對應進度的三種狀態TimeLineState.ACTIVE,TimeLineState.INACTIVE,TimeLineState.CURRENT,根據狀態在onBindDataViewHolder方法中設置markdrawable,linecolor等,在設置markSize的時候,如果大小超過30dp,需要在createCustomView方法或者onBindDataViewHolder方法中調用holder.llLine.layoutParams.width設置為大于等于markSize的大小或者設置為WrapContent,如下

holder.llLine.layoutParams.width = context.dip(35)holder.llLine.layoutParams.width = LinearLayout.LayoutParams.WRAP_CONTENT

對于布局的顯示位置有要求的話可以在createCustomView方法中通過layoutParams來控制

val rightLayoutParams = rightLayout.layoutParams as LinearLayout.LayoutParamsrightLayoutParams.rightMargin = context.dip(30)

如果不喜歡在代碼中設置控件屬性的話可以選擇布局文件中增加屬性

<com.joketng.timelinestepview.view.TimeLineStepView     android:id="@+id/rvVertical"     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:paddingStart="20dp"     app:markSize="10dp"     app:markStart="@drawable/shape_circle_orange"     app:markEnd="@drawable/shape_circle_orange"     app:markActive="@drawable/shape_dot_orange"     app:markInActive="@drawable/shape_dot_gray"     app:markCurrent="@drawable/shape_circle_orange"     app:lineWidth="3dp"     app:lineActiveColor="@color/c_main_orange"     app:lineInActiveColor="@color/c_main_gray"     app:isCustom="false"     app:layoutType="right"     />

如果需要可以在onBindDataViewHolder方法中通過holder獲取控件改變控件的樣式,如果想要添加自定義的UI,可以在createCustomView方法中添加自己定義的布局文件,此時調用setIsCustom(true)即可

rvVertical.initData(listContent, OrientationShowType.CENTER_VERTICAL,          object : TimeLineStepView.OnInitDataCallBack{            override fun onBindDataViewHolder(holder: TimeLineStepAdapter.CustomViewHolder, position: Int) {              holder.tvRightTitle.setTextColor(ContextCompat.getColor(context, R.color.c_main_black))              holder.tvLeftTitle.setTextColor(ContextCompat.getColor(context, R.color.c_main_black))              holder.tvRightTime.textSize = 12f              holder.tvLeftTime.textSize = 12f              holder.tvRightTime.setTextColor(ContextCompat.getColor(context, R.color.c_main_gray))              holder.tvLeftTime.setTextColor(ContextCompat.getColor(context, R.color.c_main_gray))            }              override fun createCustomView(leftLayout: ViewGroup, rightLayout: ViewGroup, holder: TimeLineStepAdapter.CustomViewHolder) {              LayoutInflater.from(context).inflate(布局id, leftLayout, true)//添加左邊自定義布局              LayoutInflater.from(context).inflate(布局id, rightLayout, true)//添加右邊自定義布局            }            }).setLayoutType(type).setIsCustom(true)

自定義布局的一個截圖如下

Kotlin,StepView

傳送門Github Demo

使用Maven

<dependency> <groupId>com.joketng</groupId> <artifactId>TimeLineStepView</artifactId> <version>1.0.1</version> <type>pom</type></dependency>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到kotlin教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美精品一二区| 日韩一区二区久久久| 精品美女久久久久久免费| 日韩中文字幕免费视频| 日本aⅴ大伊香蕉精品视频| 91性高湖久久久久久久久_久久99| 中文在线资源观看视频网站免费不卡| 欧美一级片在线播放| 日韩欧美成人免费视频| 亚洲精品在线91| 日韩av三级在线观看| 国产精品69精品一区二区三区| 狠狠做深爱婷婷久久综合一区| 国内精品国产三级国产在线专| 色婷婷成人综合| 欧美精品一区二区三区国产精品| 精品国产一区二区三区久久| 国产精品一区二区久久精品| 久久精品视频va| 成人免费观看a| 亚洲自拍偷拍区| 精品久久久在线观看| 久久露脸国产精品| 色综久久综合桃花网| 日韩av电影手机在线观看| 97精品国产91久久久久久| 欧美第一黄网免费网站| 国产精品天天狠天天看| 精品国内产的精品视频在线观看| 亚洲欧美制服丝袜| 久久精品国产清自在天天线| 69久久夜色精品国产7777| 久久久久久久久久久亚洲| 中文字幕日韩精品有码视频| 精品中文字幕视频| 欧美日韩国产123| 国产美女扒开尿口久久久| 亚洲最大成人在线| 亚洲精品成a人在线观看| 亚洲欧美自拍一区| 国产精品青草久久久久福利99| 97国产suv精品一区二区62| 日韩av一区在线观看| 国产精品久久久久免费a∨| 热门国产精品亚洲第一区在线| 日本精品va在线观看| 91色视频在线导航| 日韩欧美在线免费| 亚洲欧美精品在线| 青青青国产精品一区二区| 久久久天堂国产精品女人| 久久精品中文字幕电影| 欧美性69xxxx肥| 亚洲国产成人爱av在线播放| www.亚洲人.com| 国产成人在线播放| 日韩精品免费在线视频| 日本一区二三区好的精华液| 欧美大片网站在线观看| 在线观看国产精品日韩av| 亚洲国产福利在线| 国产精品香蕉在线观看| 亚洲欧美日韩中文视频| 亚洲自拍欧美色图| 成人网页在线免费观看| 日韩中文字幕视频在线观看| 国产成人综合精品在线| 中文字幕日韩有码| 欧美精品一区二区三区国产精品| 午夜精品久久久久久久男人的天堂| 国产99久久精品一区二区永久免费| 亚洲深夜福利在线| 欧美激情在线有限公司| 久久久精品久久久久| 国产欧美精品一区二区三区介绍| 国产亚洲精品高潮| 欧美激情综合亚洲一二区| 91日本在线观看| 亚洲欧美国产一本综合首页| 国产精品丝袜久久久久久高清| 久久影视三级福利片| 亚洲第一区中文字幕| 精品亚洲va在线va天堂资源站| 久久精品国产精品亚洲| 日本伊人精品一区二区三区介绍| 亚洲精品久久久久久久久久久久久| 日韩av一区二区在线观看| 国产99久久久欧美黑人| 成人精品视频99在线观看免费| 精品成人69xx.xyz| 精品久久久久久亚洲国产300| 日韩精品免费视频| 亚洲xxx视频| 成人精品网站在线观看| 欧美在线视频播放| 久久成人国产精品| 久久理论片午夜琪琪电影网| 国产精品精品视频一区二区三区| 精品中文字幕久久久久久| 深夜福利91大全| 国精产品一区一区三区有限在线| 亚洲成人激情小说| 亚洲午夜av久久乱码| 亚洲一区二区精品| 国产欧美一区二区三区在线| 成人黄色av免费在线观看| 国产原创欧美精品| 色综合久久中文字幕综合网小说| 日韩高清电影免费观看完整| 日韩精品中文字幕有码专区| 一区二区日韩精品| 国产精品成人久久久久| 动漫精品一区二区| 国产精品美女久久久免费| 中文字幕亚洲欧美一区二区三区| 正在播放欧美视频| 欧美亚洲视频在线观看| 国产在线观看精品| 国产精品高清在线| 欧洲亚洲女同hd| 久久久久久久国产精品视频| 国产精品香蕉国产| 欧美日韩精品在线播放| 一区二区欧美久久| 91色琪琪电影亚洲精品久久| 成人性生交大片免费看小说| 亚洲精品国精品久久99热| 91麻豆桃色免费看| 国产成人精品综合久久久| 欧美在线观看网站| 亚洲丁香久久久| 亚洲国产一区自拍| 久久亚洲精品网站| 九九热精品视频在线播放| 国产欧美精品日韩精品| 国产色视频一区| 国产一区二区在线播放| 久久久久久久电影一区| 色樱桃影院亚洲精品影院| 午夜精品一区二区三区av| 日韩一级黄色av| 97视频国产在线| 国产一区二区三区直播精品电影| 有码中文亚洲精品| 亚洲999一在线观看www| 日本国产欧美一区二区三区| 亚洲天堂视频在线观看| 综合国产在线观看| 日韩电视剧在线观看免费网站| 欧美网站在线观看| 91精品国产综合久久香蕉的用户体验| 日韩在线免费高清视频| 欧美精品做受xxx性少妇| 久久综合久中文字幕青草| 午夜美女久久久久爽久久| 久久久久久91| 一区二区三区视频免费在线观看| 国语自产精品视频在免费| 欧美另类暴力丝袜| 在线观看视频99| 色综合伊人色综合网| 午夜精品福利在线观看| 日韩免费在线观看视频| 亚洲精品大尺度|