2011-06-18 35 views
3

我有一個運行使用全屏應用程序:「adjustResize」的Android

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 

由於這種佈局,android:windowSoftInputMode="adjustResize"不能正常工作,即它不是劑量調整。

有沒有辦法解決這個問題?

回答

3

而不是android:windowSoftInputMode="adjustResize"你可以用android:windowSoftInputMode="adjustPan"

+0

如果adjustPan工作正常,它會導致您的某些活動被推離屏幕以騰出空間放置鍵盤。這在某些情況下可能正常工作,對其他人而言不可接受。 –

4

FYI嘗試:這是現有的AOSP(Android開源項目)的錯誤:http://code.google.com/p/android/issues/detail?id=5497

理論上講,該錯誤將是固定的,但在那之前這裏有一對夫婦關於如何解決它的想法。由於我不知道這涉及到什麼應用場景,因此這些可能不太適用。

  1. 與我對上一個答案的最佳解釋一致,設計您的佈局以使adjustPan能夠正常工作。我能想到的第一件事是沒有任何希望在鍵盤啓動時保留在屏幕上的頁眉或頁腳。

  2. 請勿將FLAG_FULLSCREEN與可接受文本輸入的佈局一起使用。可能在接受輸入時顯示狀態欄並不重要。但是,對於具有全屏模式的嵌入式輸入字段(如網頁瀏覽器)查看內容的東西,這根本沒什麼意義。

  3. 實施adjustResize-like行爲你自己的。我不確定這個效果如何,但是可能你可以編寫任何導致鍵盤顯示的類的任何一個子類(例如:EditText),你可以跟蹤鍵盤顯示的時間或者接管顯示的鍵值和隱藏鍵盤(至少覆蓋onKeyUp和onTouchEvent)。顯示時,調整內容的大小 - 可能是對softinput高度的最佳猜測,因爲用戶可以安裝不同的軟輸入方法。我相信這在技術上是困難的,而且沒有極端需要的嘗試是不合理的。

+0

我不明白這個答案downvote。也許downvoters希望有一點[adjustResize和adjustPan的背景]:http://developer.android.com/guide/topics/manifest/activity-element.html#wsoft?請注意adjustUnspecified是默認值。只要佈局能夠調整到新維度(IE,屏幕減去鍵盤),adjustResize就是最好的行爲。還要注意,在我最初的答案後2年,有人在鏈接的bug線程上發佈了#3的實現:http://stackoverflow.com/a/19494006/1241783 –

相關問題