DSAppTeam / DSAppTeam/PanelSwitchHelper
[兼容性缺陷]华为mate20Pro弹出键盘页面展示异常
Open
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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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