1

我在我的應用程序中使用[SlidingMenu] [1]。我使用Viewpager在片段中的標籤中顯示三個片段。三個片段在LinearLayouts內部有EditTexts,它們在ScrollView中。所以我的XML XMl是這樣的:軟鍵盤彈出並在片段中緩慢隱藏,使輸入緩慢

RelativeLayout>ScrollView>LinearLayout>EditText

將焦點更改爲每個EditText後,打字開始非常緩慢(需要1-2秒的響應時間)。我以爲這是因爲軟鍵盤試圖調整或平移每次。所以我嘗試了windowSoftInputMode的所有可能的值。什麼都沒有在Activity中,我使用了相同的XML,其中打字非常流暢。鍵入完成後(當用戶單擊IME完成按鈕時),鍵盤隱藏非常慢(需要3秒)。可能是什麼問題呢?和任何避免的解決方法?

順便說一下,我沒有爲EditTexts設置TextWatchers

編輯:

當我從其他兩個片段刪除EditTexts,它的流暢。但是,只有當所有這三個片段都有EditTexts時,它纔會很慢。

+0

'softInputMode'只聲明屏幕鍵盤是否顯示,如何顯示,這不會影響速度。你可以發佈一些代碼嗎? – Squeazer 2014-10-27 11:15:44

+0

@Squeazer我意識到,實際調整視圖時鍵入速度很快。但是需要時間進行調整,所以當用戶輸入時,它會變得緩慢。 – 2014-10-27 11:43:43

+0

@Squeazer看看我編輯的問題 – 2014-10-27 11:53:08

回答

2

我通過添加android:windowSoftInputMode="adjustNothing"來避免這種情況,它沒有調整大小和不滾動。並添加Focus監聽器來編輯位於屏幕底部的文本,以便在用戶輸入時可以看到它們。

editText.setOnFocusChangeListener(new OnFocusChangeListener() { 

      @Override 
      public void onFocusChange(View v, boolean hasFocus) { 
       if (hasFocus) { 
        scroll.scrollTo(rootView.getWidth(), rootView.getHeight()); //rootView is my parentView of the fragment 
       } 

      } 
     }); 

但是,如果有人知道一個優雅的解決方案,請張貼它。

+0

Life Saver ..謝謝 – Sayka 2015-12-18 19:04:05