1

我與Android的佈局工作中,當我躲在前往付款按鈕以及底視圖當鍵盤被顯示,類似的用戶按BACK或完成按鈕時在鍵盤的鍵盤現在隱藏的平均時間我顯示保存地址按鈕也底視圖,要檢查鍵盤的我使用 following solluation的知名度和它工作正常,但問題是當鍵盤隱藏它採取挺舉作爲佈局重新調整安卓:避免挺舉當隱藏軟鍵盤

softKeyboardStateWatcher = new SoftKeyboardStateWatcher(mBinding.activityRoot); 

     softKeyboardStateWatcher.addSoftKeyboardStateListener(new SoftKeyboardStateWatcher.SoftKeyboardStateListener() { 

      @Override 
      public void onSoftKeyboardOpened(int keyboardHeightInPx) { 
       mBinding.actionProceedToPayment.setVisibility(View.GONE); 
       mHomeActivityImplementation.handleBottomTabs(false); 
      } 

      @Override 
      public void onSoftKeyboardClosed() { 
       mBinding.actionProceedToPayment.setVisibility(View.VISIBLE); 
       mHomeActivityImplementation.handleBottomTabs(true); 
      } 
     }); 

above code示出當鍵盤顯示佈局則毛刺將發生如layout是在調整大小,以避免這一點,我使用onPostDelay()如下所示

  @Override 
      public void onSoftKeyboardClosed() { 
       mBinding.activityRoot.postDelayed(new Runnable() { 
        @Override 
        public void run() { 
         mBinding.actionProceedToPayment.setVisibility(View.VISIBLE); 
         mHomeActivityImplementation.handleBottomTabs(true); 
        } 
       }, 100); 
      } 

但仍面臨着同樣的問題。我也申請CountDownTimer()但問題沒有解決,是否有任何方法來避免這個混蛋?

回答

2

該混亂是因爲佈局渲染和調整其高度時,鍵盤隱藏或顯示,這一切都取決於設備,因爲我們有不同的設備與不同的處理器和GPU分別具有不同的時鐘速度和幀速率,你會在不同的設備上發現不同的行爲,在某些設備上,您可能沒有任何混亂,並且在某些設備上您有一個小小的混亂,這一切都取決於設備中的處理器和GPU。

您可以將動畫添加到您在隱藏和顯示鍵盤時顯示和隱藏的視圖,這會使該混亂變得平滑一些。

3

首先,您正在使用的庫,SoftKeyboardStateWatcher不可靠。您需要的功能未在Android框架中公開。它做出猜測,並且有許多情況會出現錯誤,並說沒有鍵盤存在,反之亦然。所以任何依賴這個類的代碼都會成爲bug。我的建議是不提供這種類型的功能,因爲它的工作原理取決於設備,操作系統版本,使用的鍵盤等。

其次,我不認爲使用該庫可避免混亂。猜測鍵盤顯示的時間不會通知你,直到鍵盤擴展完成後。所以你會一直等到鍵盤改變,然後再進行更改。這總是會導致混蛋。您可以做的唯一事情就是使按鈕動起來,而不僅僅是設置可見性。

+0

我同意@Gabe Sechan +1 –