精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

麻豆av一区二区| www国产亚洲精品久久麻豆| 国产午夜精品美女视频明星a级| 国产精品欧美激情在线观看| 国产精品一级伦理| 国产一区二区精品久久| 91尤物视频在线观看| 在线播放欧美女士性生活| 丰满女人性猛交| 人成网站在线观看| 奇米精品一区二区三区在线观看一 | 在线观看视频一区二区欧美日韩| 久久香蕉综合色| 国产精品久久久久久免费免熟| 欧美亚洲不卡| 在线免费看av不卡| 亚洲国产天堂久久国产91| 2019中文字幕免费视频| 亚洲乱码国产乱码精品精大量| 日本另类视频| 亚洲一区二区不卡免费| 欧美视频1区| 亚洲风情第一页| 久久99精品波多结衣一区| 天天综合网站| 亚洲国产欧美一区二区三区丁香婷| 欧美精品尤物在线| 亚洲a视频在线| 久久国产精品免费| 亚洲天堂网中文字| 国产日韩欧美一区二区三区四区| 国产精品51麻豆cm传媒| 亚洲乱亚洲高清| 久久国产精品偷| 国产精品一区二区亚洲| 久久99国内| 精品亚洲一区二区三区四区五区 | 午夜写真片福利电影网| 欧美wwwww| 中文国产成人精品| 99久久久无码国产精品衣服| 日本中文字幕在线一区| 亚洲高清一二三区| 日本一卡二卡在线| 激情亚洲另类图片区小说区| 欧美va在线播放| 深夜福利网站在线观看| 亚洲综合伊人| 91精品婷婷国产综合久久性色| 色悠悠久久综合网| 日本.亚洲电影| 欧美色视频在线观看| 精品久久久噜噜噜噜久久图片 | 日本不卡视频| 亚洲国产经典视频| 亚洲一卡二卡三卡四卡无卡网站在线看| 国产在线观看精品一区| 国产色产综合色产在线视频| 欧美一区1区三区3区公司| 水莓100国产免费av在线播放| 国产精品欧美大片| 欧美日韩国产综合视频在线观看 | 激情综合网天天干| 亚洲mm色国产网站| 不卡视频在线播放| caoporm超碰国产精品| 久久99蜜桃综合影院免费观看| 亚洲AV成人无码一二三区在线| 99久久99久久久精品齐齐| 麻豆精品传媒视频| av在线电影播放| 最好看的中文字幕久久| 成人性做爰片免费视频| 手机av免费在线| 欧美丝袜美女中出在线| 成人免费无码av| 欧美a视频在线| 欧美一区二区三区色| 日本wwwxx| 亚洲专区视频| www日韩中文字幕在线看| 中文字幕手机在线观看| 亚洲精选一区| 国产欧美日韩视频| 亚洲精品综合久久| 久久精品视频一区二区三区| 日韩一区不卡| 羞羞的网站在线观看| 午夜不卡在线视频| 天天干天天综合| 99久久免费精品国产72精品九九 | 99在线免费观看视频| 四虎在线视频免费观看| 欧美韩日一区二区三区四区| 欧美少妇一级片| a级大胆欧美人体大胆666| 色婷婷综合久久| 色欲无码人妻久久精品| 亚洲色图美女| 亚洲美女少妇无套啪啪呻吟| 欧美精品一区在线播放| 国产原创视频在线| 精品亚洲免费视频| 欧美日韩国产精品一区二区| 老司机福利在线视频| 性做久久久久久免费观看欧美| youjizzxxxx18| 国产三级精品三级在线观看国产| 国产一区二区三区网站| 久久免费精彩视频| 麻豆国产精品777777在线| 国产精品久久亚洲7777| 免费a级人成a大片在线观看| 黄网动漫久久久| 久久久久久欧美| 日本va中文字幕| 国产午夜精品一区在线观看 | 国产日韩欧美在线播放| 香蕉视频黄色片| 一区二区在线免费| 爱情岛论坛亚洲首页入口章节| 欧美91在线| 欧美高清在线观看| 国产精品永久久久久久久久久| 久久综合久久久久88| 国产性生活免费视频| 婷婷激情成人| 在线观看免费高清视频97| 国产一级一片免费播放放a| 久久激情五月激情| 日本欧美精品久久久| av漫画网站在线观看| 欧美一区二区三区色| 欧美一级特黄高清视频| 日韩精品一卡二卡三卡四卡无卡| 激情五月综合色婷婷一区二区| 成人影院www在线观看| 欧美日韩精品免费观看视频| 一级黄色性视频| 男女精品视频| 欧美日韩一区二区三区免费| 黄色aa久久| 亚洲精品电影在线| 日韩乱码在线观看| eeuss鲁片一区二区三区在线观看| bt天堂新版中文在线地址| 一区二区在线免费播放| 欧美人与物videos| 亚洲国产精品久久久久久久| 尤物av一区二区| 中文字幕无码毛片免费看| 女人天堂亚洲aⅴ在线观看| 91精品美女在线| 激情成人四房播| 日韩一区二区三区观看| 欧美国产精品一二三| 高清国产午夜精品久久久久久| 永久免费看av| 成人在线视频你懂的| 韩国精品久久久999| 香蕉视频网站在线| 在线中文字幕一区二区| youjizz亚洲女人| 黄一区二区三区| avav在线播放| 老牛国内精品亚洲成av人片| 欧美人成在线| 91久久精品美女高潮| 91蜜桃在线视频| 精品国产a毛片| 久久久精品福利| 欧美国产视频在线| 午夜免费视频网站| 99国产精品久久久久久久| 久久免费一区| 久久伊人国产| 精品国产一区二区三区久久久| 国产精华7777777| 中文字幕在线不卡一区| www.黄色网| 蜜桃av一区| 男同互操gay射视频在线看| 天堂av一区| 欧美在线激情网| 日韩在线免费电影| 亚洲第一国产精品| 中文字幕 欧美激情| 亚洲激情在线激情| 自拍偷拍中文字幕| 国产美女精品一区二区三区| 91九色丨porny丨国产jk| 欧美日韩国产传媒| 国产日韩一区二区| 日韩成人综合网站| 97视频在线免费观看| av中文资源在线| 精品1区2区在线观看| 香蕉污视频在线观看| 亚洲人成7777| 婷婷色一区二区三区| 国产91综合一区在线观看| 妺妺窝人体色www在线观看| 午夜电影亚洲| 亚洲欧美综合一区| 欧美美女在线直播| 亚洲综合中文字幕68页| 先锋欧美三级| 欧美一区视频在线| 欧美理论电影| 久久精品成人欧美大片| 欧美在线一卡| 亚洲国产精品999| 国产女人高潮时对白| 在线亚洲人成电影网站色www| 久久久无码精品亚洲国产| 国产精品另类一区| 新91视频在线观看| eeuss国产一区二区三区| 欧美激情第四页| 美女一区二区视频| 欧美黄色一级片视频| 在线日韩电影| 久久久久久久9| 91精品啪在线观看国产81旧版| 日韩精品一区二区三区外面| 日本亚洲不卡| 精品日本一区二区三区在线观看 | 噜噜噜在线观看免费视频日韩| 欧美一级中文字幕| 婷婷亚洲最大| 亚洲一卡二卡三卡| 久久国产小视频| 婷婷四月色综合| 天天躁日日躁狠狠躁欧美| 国产精品一区二| 国产精品毛片久久久| 99热99热| 粉嫩的18在线观看极品精品| 亚洲精品女av网站| 精品一区二区三区中文字幕 | 欧洲熟妇精品视频| 美女精品网站| av五月天在线| 日韩精品五月天| 色多多视频在线播放| 久久综合伊人| 亚洲精品怡红院| 蜜臀av一区二区在线观看 | 日韩av黄色| 成人中文字幕+乱码+中文字幕| 日韩成人免费av| 97自拍视频| 精品欧美午夜寂寞影院| 激情小说网站亚洲综合网| 亚洲成aⅴ人片久久青草影院| 国产欧美日韩综合一区在线观看| 国产劲爆久久| 欧美成人dvd在线视频| 国产成人精品999在线观看| 日韩啊v在线| 97欧美在线视频| 一二三在线视频| 在线精品观看| 老司机午夜av| 国内成+人亚洲+欧美+综合在线| 国产在线视频三区| 91丨九色丨蝌蚪富婆spa| 中文字幕在线看高清电影| 欧美高清在线一区二区| 91麻豆免费视频网站| 亚洲一区二区高清| 无码日韩精品一区二区| 欧美精品色综合| 男人的天堂a在线| 亚洲午夜精品视频| a毛片在线观看| 欧美综合在线观看| 四虎影视精品永久在线观看| 91青青草免费在线看| 日韩三级毛片| 中国人体摄影一区二区三区| 国产精品www994| 黄色一级二级三级| 国产成a人亚洲精品| www.色天使| 亚洲蜜臀av乱码久久精品蜜桃| 日韩久久精品视频| 8v天堂国产在线一区二区| 亚洲欧美另类一区| 伊人av综合网| segui88久久综合| 91精品国产综合久久久久久久久| 亚洲视频国产| 午夜精品区一区二区三| 国产字幕视频一区二区| 自拍偷拍 国产| 成人免费毛片高清视频| 99热6这里只有精品| 岛国av在线不卡| jizz中国女人| 这里只有精品在线播放| 波多野结衣精品| 成人在线观看视频网站| 一本色道久久综合亚洲精品酒店 | av资源中文在线| 成人免费淫片aa视频免费| 亚洲bt欧美bt精品777| 老司机午夜网站| 欧美aaaaaa午夜精品| 亚洲综合自拍网| 亚洲精品国产高清久久伦理二区 | 日韩欧美一区二区久久婷婷| 番号在线播放| 国产成人在线一区二区| 久久资源综合| av片在线免费| 国产一区二区在线视频| 一级黄色片网址| 欧美日韩亚洲成人| 人妻少妇一区二区三区| 欧美大尺度在线观看| 亚洲色图综合| 亚洲午夜久久久影院伊人| 日韩精品一级中文字幕精品视频免费观看| 美女久久久久久久久| 亚洲乱码国产乱码精品精98午夜 | 精品无码国产一区二区三区av| 激情五月婷婷综合| 日本不卡一区视频| 在线影院国内精品| 第一视频专区在线| 国产成人精品免费视频| 美女久久久久| 国产女女做受ⅹxx高潮| 99精品国产视频| 在线观看 中文字幕| 精品福利av导航| 韩国日本一区| 国产在线精品日韩| 亚洲作爱视频| 亚洲成人网在线播放| 色综合天天综合在线视频| 天天av综合网| 日韩女优人人人人射在线视频| 伊人春色精品| 日本va中文字幕| 国产精品久久久久久久久搜平片| 精品乱码一区内射人妻无码| 一区二区三区美女xx视频| 国产原创一区| 四虎免费在线观看视频| 国产美女精品人人做人人爽 | 亚洲茄子视频| 小毛片在线观看| 欧美日韩久久久久| 国产永久免费高清在线观看| 国产精品高潮呻吟久久av野狼 | 亚洲精品国产精品国自产网站按摩| 一区二区三区高清国产| 欧洲亚洲精品| 日本中文字幕一级片| 9人人澡人人爽人人精品| 日日摸天天添天天添破| 国产午夜精品全部视频播放| 国产精品66| 天堂а√在线中文在线| 成年人国产精品| 狠狠狠狠狠狠狠| 欧美成人午夜剧场免费观看| 成人看片黄a免费看视频| 精品国产成人av在线免| 中文字幕一区在线观看| 精品人妻av一区二区三区| 久久人人爽人人爽人人片av高请| 丝袜美腿一区二区三区动态图| 丝袜制服一区二区三区| 亚洲色图视频网| 深夜福利在线看| 成人免费看吃奶视频网站| 亚洲二区精品| 久久久久99精品成人| 欧美成人精品福利| 性欧美gay| 国产又粗又猛又爽又黄的网站| 91视频免费观看| 国产精品一区二区人人爽| 97免费中文视频在线观看| 成人免费av| 国产一级伦理片| 欧美精品xxxxbbbb| 日本午夜大片a在线观看| 亚洲一区高清| 91在线国内视频| www.久久久久久久久久| 国产精品99久久久久久www| 欧美精品网站| 亚洲第一综合网| 日韩av在线资源| 欧美a级大片在线| 亚洲高清在线免费观看|