Просмотр исходного кода

[feat]键盘插件,修复重复绘制的问题

hezihao 8 месяцев назад
Родитель
Сommit
974e68f652

+ 15 - 2
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/AiKeyboardProloguePanelComponent.kt

@@ -127,13 +127,26 @@ class AiKeyboardProloguePanelComponent @JvmOverloads constructor(
                         override fun onSelected(index: Int, totalCount: Int) {
                             super.onSelected(index, totalCount)
                             // 选中Tab,设置为粗体
-                            setBoldStyle(true)
+                            handleChange(index, true)
                         }
 
                         override fun onDeselected(index: Int, totalCount: Int) {
                             super.onDeselected(index, totalCount)
                             // 不选中Tab,设置为普通体
-                            setBoldStyle(false)
+                            handleChange(index, false)
+                        }
+
+                        // 这个Tab库的切换回调,是在onLayout时回调的,导致我们切换字体粗细时,需要requestLayout,就会造成递归绘制
+                        private fun handleChange(index: Int, isSelected: Boolean) {
+                            val newTab = mTabList[index]
+                            val currentTab = KeyboardHolder.getKeyboardService()
+                                ?.getKeyboardViewModel()?.currentPrologueTab?.value
+                            // 没有改变,则不需要切换
+                            if (currentTab == newTab) {
+                                return
+                            }
+                            // 切换字体粗细
+                            setBoldStyle(isSelected)
                         }
                     }
                     // Tab文字