精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

鴻蒙輸入框被軟鍵盤遮擋的解決辦法

運維 系統運維
滾動操作為什么要delay 100毫秒?因為點擊一個輸入框Component.LayoutRefreshedListener有時會反復調用多次,而且間隔時間小于10毫秒,所以會造成滾動距離不準確。

[[410742]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

處理前后對比
 

問題現狀

安卓上面,輸入框被軟鍵盤遮擋,很簡單

  1. xml 配置 
  2. android:windowSoftInputMode="adjustPan" 
  3. 或者,java 配置 
  4. getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); 

 這樣,軟鍵盤彈出后,輸入框就會自動上移。

鴻蒙上也有類似的設置,但是貌似沒效果:

  1. getWindow().setInputPanelDisplayType(WindowManager.LayoutConfig.INPUT_ADJUST_PAN); 

解決過程

原理:

布局文件用ScrollView包起來

監聽根布局大小變化,變小了,證明輸入法彈出了。

滾動ScrollView,使當前焦點控件顯示在軟鍵盤上方。

核心代碼:

  1. public class MainAbilitySlice extends AbilitySlice { 
  2.     private EventHandler mainHandler = new EventHandler(EventRunner.getMainEventRunner()); 
  3.     private MyTask myTask = null
  4.     class MyTask implements Runnable { 
  5.         private final int softHeight; 
  6.         private final ScrollView root; 
  7.         private final Rect decorRect; 
  8.  
  9.         public MyTask(int softHeight, ScrollView root, Rect decorRect) { 
  10.             this.softHeight = softHeight; 
  11.             this.root = root; 
  12.             this.decorRect = decorRect; 
  13.         } 
  14.  
  15.         @Override 
  16.         public void run() { 
  17.             Timber.d("onRefreshed() called with: softHeight = [ %s ]", softHeight); 
  18.             Component focusView = root.findFocus(); 
  19.             int focusTop = focusView.getLocationOnScreen()[1];//焦點控件的左上角 
  20.             root.fluentScrollByY(focusTop + focusView.getHeight() - decorRect.top - decorRect.getHeight() + 100); 
  21.         } 
  22.     } 
  23.  
  24.     @Override 
  25.     public void onStart(Intent intent) { 
  26.         super.onStart(intent); 
  27.         getWindow().setInputPanelDisplayType(WindowManager.LayoutConfig.INPUT_ADJUST_PAN); 
  28.         super.setUIContent(ResourceTable.Layout_ability_main); 
  29.  
  30.         Optional<Display> display = DisplayManager.getInstance().getDefaultDisplay(getContext()); 
  31.         Point pt = new Point(); 
  32.         display.get().getSize(pt); 
  33.         int screenHeight = pt.getPointYToInt();//不包括狀態欄(手機時間、wifi顯示的那一部分,) 2211,狀態欄是129,加起來就是2340 
  34.         Timber.d("onRefreshed() called with: screenHeight = [ %s ]", screenHeight); 
  35.  
  36.         ScrollView root = (ScrollView) findComponentById(ResourceTable.Id_root); 
  37.         root.setLayoutRefreshedListener(new Component.LayoutRefreshedListener() { 
  38.             @Override 
  39.             public void onRefreshed(Component component) { 
  40.                 //包括標題欄,但不包括狀態欄。默認 大小 (0,129,1080,2340),top=129即狀態欄 , height=2211。 同android的decorView 
  41.                 Rect decorRect = new Rect(); 
  42.                 component.getWindowVisibleRect(decorRect); 
  43.                 Timber.d("onRefreshed() called with: rect = [ %s ]", decorRect); 
  44.                 if (decorRect.getHeight() == 0) { 
  45.                     //剛進入界面可能為0 
  46.                     return
  47.                 } 
  48.                 int softHeight = screenHeight - decorRect.getHeight(); 
  49.                 Timber.d("onRefreshed() called with: softHeight = [ %s ]", softHeight); 
  50.  
  51.                 if (softHeight > 100) {//當輸入法高度大于100判定為輸入法打開了 
  52.                     if (myTask != null) { 
  53.                         mainHandler.removeTask(myTask); 
  54.                         myTask = null
  55.                     } 
  56.                     mainHandler.postTask(myTask = new MyTask(softHeight, root, decorRect), 100); 
  57.                 } 
  58.             } 
  59.         }); 
  60.     } 

 完整代碼見文末 

特別說明: 滾動操作為什么要delay 100毫秒?因為點擊一個輸入框Component.LayoutRefreshedListener有時會反復調用多次,而且間隔時間小于10毫秒,所以會造成滾動距離不準確。用postTask之后,每次調用的時候會把之前的task remove掉,以最新的一次為準。

計算滾動距離

其中上面的大紅框是decorRect(即當前Ability可視區域),下面的大黑框是輸入法顯示區域。其中,軟鍵盤彈出后,輸入框被軟鍵盤擋住,圖中的小紅框。

所以,要滾動的距離就是圖中的C=A-B。

輸入框被軟鍵盤遮擋的解決辦法-鴻蒙HarmonyOS技術社區

可以優化的點:

如果是Dialog中的輸入框,當前的計算方法是否正確?

如果不用ScrollView,還有別的解決辦法嗎?

抽取出工具類或工具方法,代碼復用。

文章相關附件可以點擊下面的原文鏈接前往下載

原文鏈接:https://harmonyos.51cto.com/posts/4776

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2009-08-21 13:25:49

C#打開軟鍵盤

2019-04-25 10:20:22

H5軟鍵盤前端

2010-01-15 09:38:08

磁盤被寫保護解決辦法

2021-08-07 15:31:45

Windows 10Windows微軟

2013-04-01 17:05:28

2024-03-06 09:16:57

PAD設備kikaInput鴻蒙

2013-06-27 17:26:01

AndroidEditText

2010-05-04 13:52:00

Oracle用戶被鎖

2024-05-06 08:28:09

Android窗口鍵盤

2017-12-05 13:12:35

Android軟鍵盤參數

2020-03-24 09:34:00

移動端H5軟鍵盤

2017-12-05 15:26:19

2017-07-03 17:20:55

Android軟鍵盤控制開發問題

2020-09-24 14:06:19

Vue

2009-06-03 16:41:21

Eclipse亂碼Eclipse

2011-03-04 13:07:47

Filezilla

2011-01-19 17:54:48

2021-09-27 14:44:48

鴻蒙HarmonyOS應用

2009-05-31 09:07:35

Oracle鎖定

2010-08-19 15:40:34

DIVIE6
點贊
收藏

51CTO技術棧公眾號

邻居大乳一区二区三区| 亚洲国产综合久久| 日韩视频1区| 欧美日韩精品二区| 天堂精品一区二区三区| 国产成人精品白浆久久69| 亚洲日产国产精品| 中文字幕日韩av电影| wwwww在线观看| 中文字幕一区久| 有码一区二区三区| 亚洲国产精品毛片| 天堂中文在线资源| 狠狠色狠狠色综合| 国产精品1区2区在线观看| 少妇久久久久久被弄高潮| 秋霞影视一区二区三区| 欧美群妇大交群的观看方式| www在线观看免费| 久久77777| 久久久一区二区三区| 97se亚洲综合| 中国黄色一级视频| 国产日韩亚洲| 色综合天天综合网国产成人网| 欧美人妻一区二区三区| 国产区精品视频在线观看豆花| 欧美日韩成人在线| 日韩一级免费在线观看| 91jq激情在线观看| 一区二区在线观看免费| 日韩wuma| 日本大片在线观看| 国产**成人网毛片九色| 国产美女扒开尿口久久久| 国产69精品久久久久久久久久| 欧美+日本+国产+在线a∨观看| 亚洲视频综合网| free性中国hd国语露脸| 亚洲国产欧美国产第一区| 欧美日韩在线三级| 看欧美ab黄色大片视频免费| 僵尸再翻生在线观看免费国语| 一区二区三区免费看视频| 一区视频二区视频| 性开放的欧美大片| 久久久久久久久伊人| 免费久久久一本精品久久区| 性插视频在线观看| 成人精品视频.| 成人午夜电影免费在线观看| 国产高清在线免费| 国产乱码精品一区二区三区五月婷| 国产精品视频在线观看| 国产情侣免费视频| 人人超碰91尤物精品国产| 国产成人一区二区| 这里只有精品国产| 青娱乐精品在线视频| 国产精品麻豆va在线播放| 一级特黄免费视频| 蜜桃久久久久久| 成人国产精品久久久| 国产伦精品一区二区三区四区| 美女www一区二区| 成人国产精品免费视频| 午夜精品一区二区三| 国产aⅴ综合色| 激情伦成人综合小说| 色av男人的天堂免费在线| 久久综合色婷婷| 国产丝袜欧美中文另类| 日韩视频精品在线| av激情在线观看| 狠久久av成人天堂| 97成人精品区在线播放| 国产中文字幕视频| 喷水一区二区三区| 亚洲自拍另类欧美丝袜| 人人妻人人澡人人爽人人欧美一区| 高清不卡一二三区| 欧美高清一区二区| 日本蜜桃在线观看| 亚洲午夜一区二区三区| 日本日本19xxxⅹhd乱影响| 欧美一级大片| 91精品欧美综合在线观看最新| 日本一本在线视频| 欧洲亚洲视频| 久久精品免费播放| 国产又色又爽又黄的| 日本午夜一本久久久综合| 91精品中文在线| 五月婷婷免费视频| 国产精品第一页第二页第三页 | 欧洲精品一区| 在线观看日韩av| 久久视频免费在线观看| 日本欧美在线看| 俄罗斯精品一区二区| 九色蝌蚪在线| 亚洲综合视频在线| 国产日韩欧美久久| 噜噜噜狠狠夜夜躁精品仙踪林| 伊人久久免费视频| 久久精品免费在线| 麻豆免费看一区二区三区| 国产伦精品一区二区三区高清版| av在线天堂播放| 午夜视频在线观看一区二区| 九九热免费在线观看| 欧美电影在线观看免费| 不卡av在线播放| jizz国产在线观看| 99在线精品视频| 欧美日韩中文字幕在线播放| 黄色精品视频| 日韩av最新在线| 精品99久久久久成人网站免费| 男女性色大片免费观看一区二区| 国产日韩二区| 在线heyzo| 欧美日韩国产首页| 中文字幕成人动漫| 校园激情久久| 好吊色欧美一区二区三区四区| caoporn97在线视频| 欧美日韩在线三区| 欧美激情视频二区| 丝袜脚交一区二区| 麻豆av福利av久久av| 俄罗斯一级**毛片在线播放| 91.com视频| 女教师淫辱の教室蜜臀av软件| 免费看的黄色欧美网站| 国内成+人亚洲| h片在线观看视频免费| 日韩一区二区三区视频| 欧美亚洲日本在线| 国产麻豆视频一区| 三上悠亚免费在线观看| 久久免费资源| 深夜精品寂寞黄网站在线观看| 国产成人无码专区| 国产亚洲综合在线| 青青青在线视频免费观看| 亚洲资源网你懂的| 日韩美女视频免费看| 欧美伦理影视网| 色综合久久中文字幕综合网| 蜜桃精品成人影片| 久久精品毛片| 天堂资源在线亚洲视频| 97人人做人人爽香蕉精品| 伊人久久久久久久久久久| 岳乳丰满一区二区三区| 国产精品久久久久久久久免费相片| 午夜免费精品视频| 久久神马影院| 91久色国产| 1024在线看片你懂得| 精品一区精品二区| 国产午夜精品久久久久| 国产欧美一区二区精品秋霞影院| 久久久久久久久久久久91| 日韩欧美视频专区| 亚洲xxxxx电影| av毛片午夜不卡高**水| 亚洲免费电影一区| 伊人色综合久久久| 亚洲激情自拍偷拍| 国产呦小j女精品视频| 日韩精品欧美精品| 手机福利在线视频| 高清精品视频| 国产精品流白浆视频| 综合图区亚洲| 精品夜色国产国偷在线| 在线观看免费中文字幕| 玉米视频成人免费看| 久久丫精品国产亚洲av不卡| 日本不卡的三区四区五区| 国产 国语对白 露脸| 亚洲免费专区| 91视频免费网站| 蜜桃在线视频| 久久精品99久久香蕉国产色戒| 成人午夜视频一区二区播放| 色哟哟国产精品| 欧美黑吊大战白妞| 久久久久国产一区二区三区四区 | 成人成人成人在线视频| 精品久久久久久亚洲| 黑人巨大精品| 久久成人在线视频| 深夜福利在线看| 欧美精品粉嫩高潮一区二区| 国产成人啪精品午夜在线观看| 国产三级一区二区| 在线播放av网址| 日韩不卡一区二区| 精品少妇一区二区三区在线| 欧美jizz| 欧美激情视频一区二区三区| 国产精品久久久久久久久久辛辛| 欧美亚洲日本黄色| 午夜伦理大片视频在线观看| 国产亚洲精品久久久久久| 亚洲精品无码专区| 欧美一区二区免费视频| 波多野结衣电车痴汉| 亚洲成人免费在线| 91porn在线视频| 中文字幕巨乱亚洲| 国产精品一二三区在线观看| 成人动漫一区二区在线| 天堂av.com| 久久99在线观看| 99热手机在线| 久久在线91| 日本少妇高潮喷水视频| 激情偷拍久久| 国产成人在线小视频| 91日韩视频| 亚洲精品二区| 波多野结衣在线观看一区二区| 久久大片网站| 伦理一区二区| 国产v亚洲v天堂无码| 精品午夜av| 成人久久18免费网站图片| 韩国精品主播一区二区在线观看 | 91夜夜蜜桃臀一区二区三区| 成人欧美在线视频| 99综合久久| 91精品在线看| 国产一区二区三区免费在线| 国产精品自拍偷拍视频| 成人全视频免费观看在线看| 国产成人精品久久| 二吊插入一穴一区二区| 青青青国产精品一区二区| 神马久久午夜| 国产91在线播放精品91| 欧美gay视频| 国产精品91久久久| 日本一区免费网站| 国产精品中文在线| 国产原创一区| 亚洲伊人第一页| 日韩黄色av| 狠狠色噜噜狠狠色综合久| 久久99精品久久久久久欧洲站 | 国产探花在线精品| 日韩wuma| 国产大片一区| 男女爱爱视频网站| 欧美色123| 狠狠97人人婷婷五月| 日韩精品一级中文字幕精品视频免费观看 | 国产精品一卡二| 亚洲v在线观看| 成人av综合一区| 亚洲午夜福利在线观看| 久久精品一区二区三区不卡| 欧美老女人性生活视频| 中文字幕一区在线观看视频| 国模无码国产精品视频| 午夜国产精品影院在线观看| 亚洲乱码国产乱码精品| 欧美精品乱人伦久久久久久| 亚洲av综合色区无码一二三区| 精品国产一区二区三区四区四| 日韩在线观看视频网站| 亚洲欧美日本精品| 麻豆视频在线| 午夜免费日韩视频| 福利一区二区免费视频| 亚洲一区中文字幕| 你懂的视频欧美| 一区二区三区观看| 1024成人| av网站在线不卡| 成人免费毛片嘿嘿连载视频| 国产精品久久免费观看| 尤物在线观看一区| 无码视频在线观看| 精品久久久久久久人人人人传媒| 激情视频在线观看免费| 久久亚洲春色中文字幕| 亚洲私拍视频| 亚洲最大福利视频网站| 曰本一区二区三区视频| 中文字幕精品在线播放| 日韩高清电影一区| 午夜福利三级理论电影| 国产精品蜜臀在线观看| 日本三级片在线观看| 欧美日韩高清一区二区不卡| 日韩一二三四| 九色精品免费永久在线| 成人18视频在线观看| 好看的日韩精品视频在线| 97偷自拍亚洲综合二区| 国产日韩一区二区在线| 国产iv一区二区三区| 欧美aaa级片| 色综合久久88色综合天天6 | 亚洲欧美日韩国产中文| 91在线中文| 国产精品丝袜高跟| 亚洲专区视频| 毛片在线播放视频| 国产黄人亚洲片| 亚洲AV成人无码网站天堂久久| 舔着乳尖日韩一区| 亚洲卡一卡二卡三| 久久成人这里只有精品| 国产精品黄色片| 日本一区二区久久精品| 亚洲一区二区三区高清| 波多野吉衣在线视频| **欧美大码日韩| 在线观看日韩一区二区| 亚洲最大中文字幕| 91精品韩国| 日本不卡一区二区三区在线观看| 日韩一级网站| 亚洲日本久久久| 一区二区三区中文免费| 国产又粗又大又爽| 色综久久综合桃花网| 成人日韩在线| 亚洲乱码一区二区三区 | 性做久久久久久免费观看| 国产女同91疯狂高潮互磨| 日韩专区在线播放| 免费视频观看成人| 亚洲啪啪av| 久久99久久久欧美国产| 最新黄色av网址| 91麻豆精品国产| 菠萝菠萝蜜在线观看| 亚洲伊人成综合成人网| 欧美在线免费一级片| 亚洲国产精品第一页| 亚洲一区二区三区四区不卡| 午夜精品一区二区三| 韩国国内大量揄拍精品视频| 国产精品白丝av嫩草影院| 国产在线播放观看| 26uuu亚洲婷婷狠狠天堂| 老熟妇仑乱一区二区av| 伊人伊成久久人综合网站| 久久99国产精品二区高清软件| 亚洲日本无吗高清不卡| 国产一区二区三区四区在线观看| 中文字幕亚洲欧美日韩| 欧美v日韩v国产v| 国产美女精品写真福利视频| 青青草成人网| 麻豆91在线播放| 欧美成人三级在线观看| 精品久久久久久久人人人人传媒| 欧美激情护士| 午夜视频久久久| 国产麻豆午夜三级精品| 精品国产免费观看| 国产亚洲欧美aaaa| 欧美大片91| 欧美日韩国产精品激情在线播放| 国产日韩欧美不卡在线| 国产偷拍一区二区| 97碰在线观看| 日韩欧美网址| 美国黄色一级视频| 欧洲生活片亚洲生活在线观看| 免费黄色在线观看| 国产九色精品| 免费在线观看精品| 久久久久久蜜桃| 中文字幕欧美亚洲| 国产成人夜色高潮福利影视| 国产自偷自偷免费一区| 亚洲乱码日产精品bd| 久草福利在线视频| 91一区二区三区| 日本亚洲视频在线| 久久久久无码国产精品不卡| 亚洲欧美一区二区三区情侣bbw| 国产精品igao视频网网址不卡日韩 | 91视频免费在线| 国产精品美女| 欧美第一页在线观看| 亚洲人成五月天| 99re6热只有精品免费观看| 免费涩涩18网站入口| 亚洲一区免费观看| 欧美一级二级三级区| 久久精品日产第一区二区三区乱码 |