DSAppTeam / DSAppTeam/PanelSwitchHelper

[兼容性缺陷]华为mate20Pro弹出键盘页面展示异常

Open
#200 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Java
Stars
2.4k
Forks
287
PR merge metrics
No merged PRs in 30d

Description

Androidx版本:是

PanelSwitchHelper版本:v1.5.4

手机型号: 华为mate20Pro

手机系统版本: HarmoneyOS 2.0.0

问题描述:华为mate20Pro弹出键盘页面会抖动,使用Demo能100%复现。

日志:

[正常状态点击输入框弹出键盘]

2023-08-24 18:05:10.626 24668-24668 LogTracker              com.example.demo                     D  PanelSwitchLayout#checkoutPanel => checkout success ! lastPanel's id : -1 , panel's id :0
2023-08-24 18:05:10.638 24668-24668 LogTracker              com.example.demo                     D  PanelSwitchLayout#onLayout =>  getCompatPanelHeight  :823
2023-08-24 18:05:10.638 24668-24668 LogTracker              com.example.demo                     D  PanelSwitchLayout#onLayout =>  getContentContainerTop  :-823
2023-08-24 18:05:10.640 24668-24668 LogTracker              com.example.demo                     D  PanelSwitchLayout#onLayout => 界面每一次 layout 的信息回调 
                                                                                                    layoutInfo                                         = onLayout(changed : false , l : 0  , t : 75 , r : 1080 , b : 2265) 
                                                                                                    currentPanelState                                  = 显示键盘输入 
                                                                                                    isPad                                              = false 
                                                                                                    isFullScreen                                       = false 
                                                                                                    isPortrait                                         = true 
                                                                                                    isNavigationShown                                  = false 
                                                                                                    screenH (static,include SystemUI)                  = 2340 
                                                                                                    screenH (static,exclude SystemUI)                  = 2265 
                                                                                                    screenH (dynamic,exclude SystemUI)                 = 2265 
                                                                                                    localLocation[y]                                   = 150 
                                                                                                    toolbarH                                           = 0 
                                                                                                    StatusBarH                                         = 75 
                                                                                                    NavigationBarH                                     = 120 
                                                                                                    layout Location                                    = (0,150) 
                                                                                                    paddingTop                                         = 0 
                                                                                                    keyboardH                                          = 823 
                                                                                                    ContentContainerTop                                = -823 
                                                                                                    ContentContainerH                                  = 2190 
                                                                                                    PanelContainerTop                                  = 1367 
                                                                                                    PanelContainerH                                    = 823 
                                                                                                    changeBounds                                       = true 
                                                                                                    reverseResetState                                  = true 
                                                                                                    contentContainer Layout                            = (0,-823,1080,1367) 
                                                                                                    panelContainer Layout                              = (0,1367,1080,2190) 
2023-08-24 18:05:10.643 24668-24668 LogTracker              com.example.demo                     D  PanelSwitchLayout#onLayout =>  getCompatPanelHeight  :823
2023-08-24 18:05:10.643 24668-24668 LogTracker              com.example.demo                     D  PanelSwitchLayout#onLayout =>  getContentContainerTop  :-823
2023-08-24 18:05:10.643 24668-24668 LogTracker              com.example.demo                     D  PanelSwitchLayout#onLayout => 界面每一次 layout 的信息回调 
                                                                                                    layoutInfo                                         = onLayout(changed : false , l : 0  , t : 75 , r : 1080 , b : 2265) 
                                                                                                    currentPanelState                                  = 显示键盘输入 
                                                                                                    isPad                                              = false 
                                                                                                    isFullScreen                                       = false 
                                                                                                    isPortrait                                         = true 
                                                                                                    isNavigationShown                                  = false 
                                                                                                    screenH (static,include SystemUI)                  = 2340 
                                                                                                    screenH (static,exclude SystemUI)                  = 2265 
                                                                                                    screenH (dynamic,exclude SystemUI)                 = 2265 
                                                                                                    localLocation[y]                                   = 150 
                                                                                                    toolbarH                                           = 0 
                                                                                                    StatusBarH                                         = 75 
                                                                                                    NavigationBarH                                     = 120 
                                                                                                    layout Location                                    = (0,150) 
                                                                                                    paddingTop                                         = 0 
                                                                                                    keyboardH                                          = 823 
                                                                                                    ContentContainerTop                                = -823 
                                                                                                    ContentContainerH                                  = 2190 
                                                                                                    PanelContainerTop                                  = 1367 
                                                                                                    PanelContainerH                                    = 823 
                                                                                                    changeBounds                                       = false 
                                                                                                    contentContainer Layout                            = (0,-823,1080,1367) 
                                                                                                    panelContainer Layout                              = (0,1367,1080,2190) 
2023-08-24 18:05:10.644 24668-24668 LogTracker              com.example.demo                     D  PanelSwitchLayout#onGlobalLayout => 界面每一次变化的信息回调 
                                                                                                    windowSoftInputMode                                = 19 
                                                                                                    currentPanelSwitchLayoutVisible                    = true 
                                                                                                    screenHeight                                       = 2340 
                                                                                                    contentHeight                                      = 2265 
                                                                                                    isFullScreen                                       = false 
                                                                                                    isNavigationBarShown                               = false 
                                                                                                    deviceStatusBarH                                   = 75 
                                                                                                    deviceNavigationBarH                               = 120 
                                                                                                    systemInset                                        = left(0) top(0) right(0) bottom(0) 
                                                                                                    inset                                              = left(0) top(0) right(0) bottom(0) 
                                                                                                    currentSystemInfo                                  = statusBarH : 75, navigationBarH : 0 全面屏手势虚拟栏H : 0 
                                                                                                    currentSystemH                                     = 75 
                                                                                                    minLimitCloseKeyboardH                             = 120 
                                                                                                    minLimitOpenKeyboardH                              = 300 
                                                                                                    lastKeyboardH                                      = 0 
                                                                                                    currentKeyboardInfo                                = keyboardH : 0, realKeyboardH : 0, isShown : false 
2023-08-24 18:05:10.695 24668-24668 LogTracker              com.example.demo                     D  PanelSwitchLayout#KeyboardStateChanged => try to set KeyBoardHeight : 823,isShow true
2023-08-24 18:05:10.695 24668-24668 LogTracker              com.example.demo                     D  PanelSwitchLayout#onGlobalLayout => 界面每一次变化的信息回调 
                                                                                                    windowSoftInputMode                                = 19 
                                                                                                    currentPanelSwitchLayoutVisible                    = true 
                                                                                                    screenHeight                                       = 2340 
                                                                                                    contentHeight                                      = 1442 
                                                                                                    isFullScreen                                       = false 
                                                                                                    isNavigationBarShown                               = false 
                                                                                                    deviceStatusBarH                                   = 75 
                                                                                                    deviceNavigationBarH                               = 120 
                                                                                                    systemInset                                        = left(0) top(0) right(0) bottom(0) 
                                                                                                    inset                                              = left(0) top(0) right(0) bottom(0) 
                                                                                                    currentSystemInfo                                  = statusBarH : 75, navigationBarH : 0 全面屏手势虚拟栏H : 0 
                                                                                                    currentSystemH                                     = 75 
                                                                                                    minLimitCloseKeyboardH                             = 120 
                                                                                                    minLimitOpenKeyboardH                              = 300 
                                                                                                    lastKeyboardH                                      = 0 
                                                                                                    currentKeyboardInfo                                = keyboardH : 823, realKeyboardH : 823, isShown : false 
2023-08-24 18:05:10.712 24668-24668 LogTracker              com.example.demo                     D  PanelSwitchLayout#onGlobalLayout => 界面每一次变化的信息回调 
                                                                                                    windowSoftInputMode                                = 19 
                                                                                                    currentPanelSwitchLayoutVisible                    = true 
                                                                                                    screenHeight                                       = 2340 
                                                                                                    contentHeight                                      = 1442 
                                                                                                    isFullScreen                                       = false 
                                                                                                    isNavigationBarShown                               = false 
                                                                                                    deviceStatusBarH                                   = 75 
                                                                                                    deviceNavigationBarH                               = 120 
                                                                                                    systemInset                                        = left(0) top(0) right(0) bottom(0) 
                                                                                                    inset                                              = left(0) top(0) right(0) bottom(0) 
                                                                                                    currentSystemInfo                                  = statusBarH : 75, navigationBarH : 0 全面屏手势虚拟栏H : 0 
                                                                                                    currentSystemH                                     = 75 
                                                                                                    minLimitCloseKeyboardH                             = 120 
                                                                                                    minLimitOpenKeyboardH                              = 300 
                                                                                                    lastKeyboardH                                      = 823 
                                                                                                    currentKeyboardInfo                                = keyboardH : 823, realKeyboardH : 823, isShown : true 
2023-08-24 18:05:10.857 24668-24668 LogTracker              com.example.demo                     D  PanelSwitchLayout#onLayout =>  getCompatPanelHeight  :823
2023-08-24 18:05:10.857 24668-24668 LogTracker              com.example.demo                     D  PanelSwitchLayout#onLayout =>  getContentContainerTop  :-823
2023-08-24 18:05:10.858 24668-24668 LogTracker              com.example.demo                     D  PanelSwitchLayout#onLayout => 界面每一次 layout 的信息回调 
                                                                                                    layoutInfo                                         = onLayout(changed : false , l : 0  , t : 75 , r : 1080 , b : 2265) 
                                                                                                    currentPanelState                                  = 显示键盘输入 
                                                                                                    isPad                                              = false 
                                                                                                    isFullScreen                                       = false 
                                                                                                    isPortrait                                         = true 
                                                                                                    isNavigationShown                                  = false 
                                                                                                    screenH (static,include SystemUI)                  = 2340 
                                                                                                    screenH (static,exclude SystemUI)                  = 2265 
                                                                                                    screenH (dynamic,exclude SystemUI)                 = 1442 
                                                                                                    localLocation[y]                                   = -448 
                                                                                                    toolbarH                                           = 0 
                                                                                                    StatusBarH                                         = 75 
                                                                                                    NavigationBarH                                     = 120 
                                                                                                    layout Location                                    = (0,-448) 
                                                                                                    paddingTop                                         = 0 
                                                                                                    keyboardH                                          = 823 
                                                                                                    ContentContainerTop                                = -823 
                                                                                                    ContentContainerH                                  = 2788 
                                                                                                    PanelContainerTop                                  = 1965 
                                                                                                    PanelContainerH                                    = 823 
                                                                                                    changeBounds                                       = true 
                                                                                                    reverseResetState                                  = true 
                                                                                                    contentContainer Layout                            = (0,-823,1080,1965) 
                                                                                                    panelContainer Layout                              = (0,1965,1080,2788) 
2023-08-24 18:05:10.860 24668-24668 LogTracker              com.example.demo                     D  PanelSwitchLayout#onLayout =>  getCompatPanelHeight  :823
2023-08-24 18:05:10.860 24668-24668 LogTracker              com.example.demo                     D  PanelSwitchLayout#onLayout =>  getContentContainerTop  :-823
2023-08-24 18:05:10.861 24668-24668 LogTracker              com.example.demo                     D  PanelSwitchLayout#onLayout => 界面每一次 layout 的信息回调 
                                                                                                    layoutInfo                                         = onLayout(changed : false , l : 0  , t : 75 , r : 1080 , b : 2265) 
                                                                                                    currentPanelState                                  = 显示键盘输入 
                                                                                                    isPad                                              = false 
                                                                                                    isFullScreen                                       = false 
                                                                                                    isPortrait                                         = true 
                                                                                                    isNavigationShown                                  = false 
                                                                                                    screenH (static,include SystemUI)                  = 2340 
                                                                                                    screenH (static,exclude SystemUI)                  = 2265 
                                                                                                    screenH (dynamic,exclude SystemUI)                 = 1442 
                                                                                                    localLocation[y]                                   = -448 
                                                                                                    toolbarH                                           = 0 
                                                                                                    StatusBarH                                         = 75 
                                                                                                    NavigationBarH                                     = 120 
                                                                                                    layout Location                                    = (0,-448) 
                                                                                                    paddingTop                                         = 0 
                                                                                                    keyboardH                                          = 823 
                                                                                                    ContentContainerTop                                = -823 
                                                                                                    ContentContainerH                                  = 2788 
                                                                                                    PanelContainerTop                                  = 1965 
                                                                                                    PanelContainerH                                    = 823 
                                                                                                    changeBounds                                       = false 
                                                                                                    contentContainer Layout                            = (0,-823,1080,1965) 
                                                                                                    panelContainer Layout                              = (0,1965,1080,2788) 
2023-08-24 18:05:10.862 24668-24668 LogTracker              com.example.demo                     D  PanelSwitchLayout#onGlobalLayout => 界面每一次变化的信息回调 
                                                                                                    windowSoftInputMode                                = 19 
                                                                                                    currentPanelSwitchLayoutVisible                    = true 
                                                                                                    screenHeight                                       = 2340 
                                                                                                    contentHeight                                      = 1442 
                                                                                                    isFullScreen                                       = false 
                                                                                                    isNavigationBarShown                               = false 
                                                                                                    deviceStatusBarH                                   = 75 
                                                                                                    deviceNavigationBarH                               = 120 
                                                                                                    systemInset                                        = left(0) top(0) right(0) bottom(0) 
                                                                                                    inset                                              = left(0) top(0) right(0) bottom(0) 
                                                                                                    currentSystemInfo                                  = statusBarH : 75, navigationBarH : 0 全面屏手势虚拟栏H : 0 
                                                                                                    currentSystemH                                     = 75 
                                                                                                    minLimitCloseKeyboardH                             = 120 
                                                                                                    minLimitOpenKeyboardH                              = 300 
                                                                                                    lastKeyboardH                                      = 823 
                                                                                                    currentKeyboardInfo                                = keyboardH : 823, realKeyboardH : 823, isShown : true 

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the keyboard-opening behavior in the Demo on a Huawei Mate20 Pro running HarmonyOS 2.0.0 with PanelSwitchHelper v1.5.4, then inspect the reported layout and keyboard-state logs. Done means the page no longer jitters when the keyboard appears on this device while existing behavior remains intact.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
mobile
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.