Browse Source

提交人:jtm
提交内容:bug fixed

江天明 1 year ago
parent
commit
60b468c4dc

+ 1 - 1
BusinessCommon/src/main/java/com/develop/common/widget/LinearPositionObserver.kt

@@ -13,7 +13,7 @@ class LinearPositionObserver(
         super.onScrollStateChanged(recyclerView, newState)
         if (newState == RecyclerView.SCROLL_STATE_IDLE) {
             val layoutManager = recyclerView.layoutManager as LinearLayoutManager
-            val position = layoutManager.findFirstVisibleItemPosition()
+            val position = layoutManager.findFirstCompletelyVisibleItemPosition()
             if (position < 0) {
                 return
             }

+ 17 - 7
BusinessCommon/src/main/java/com/develop/common/widget/TimePickerView.kt

@@ -28,12 +28,13 @@ class TimePickerView : ConstraintLayout {
 
     private var firstTimePos = 0
     private var secondTimePos = 0
+    private var currentTotalSecond = 0
 
     private var maxTime = 8 * 60 * 60
     private var minTime = 0
 
-    private var firstUnit:String? = null
-    private var secondUnit:String? = null
+    private var firstUnit: String? = null
+    private var secondUnit: String? = null
 
     var onTimePickerCallback: OnTimePickerCallback? = null
     private var firstManager: ScrollLinearManager
@@ -165,7 +166,7 @@ class TimePickerView : ConstraintLayout {
         }
 
         this.firstUnit = firstUnit;
-        this.secondUnit =  secondUnit;
+        this.secondUnit = secondUnit;
     }
 
     private fun updateDisplayTime() {
@@ -210,7 +211,11 @@ class TimePickerView : ConstraintLayout {
         }
         binding.let {
             if (changeSetting) {
-                firstTimePos = firstTime
+                firstTimePos = if (hours > 0) {
+                    59 + firstTime
+                } else {
+                    firstTime
+                }
                 secondTimePos = secondTime
                 it.tvSetTimeFirst.scrollToPosition(firstTimePos)
                 it.tvSetTimeSecond.scrollToPosition(secondTimePos)
@@ -253,10 +258,15 @@ class TimePickerView : ConstraintLayout {
         val maxMinutes = (maxTime / 60 % 60)
         val maxHours = (maxTime / 3600)
         val maxSeconds = maxTime % 60
-        val currentSeconds: Int =  if(firstUnit === "hour"){
-            val hours = firstTimePos
+        val currentSeconds: Int = if (firstUnit === "hour") {
+            val indexRe = firstData[firstTimePos]
+            val hours = if (indexRe.startsWith("0")) {
+                indexRe.substring(1, 2).toInt()
+            } else {
+                indexRe.toInt()
+            }
             hours * 60 * 60 + secondTimePos * 60
-        }else{
+        } else {
             firstTimePos * 60 + secondTimePos
         }
         if (currentSeconds < minTime) {