2012-07-12 94 views
5

嘗試製作透明的Android InputMethod - 即底層內容通過我正在開發的鍵盤顯示。Android透明輸入法

我已經能夠使我傳遞給系統的視圖透明 - 我認爲 - 但似乎有一些東西在我的視圖下面是純白的 - 並且混淆了底層內容。

這是絕對有可能的,這些傢伙做到這一點:

https://play.google.com/store/apps/details?id=com.aitype.android.tablet.p&feature=search_result#?t=W251bGwsMSwxLDEsImNvbS5haXR5cGUuYW5kcm9pZC50YWJsZXQucCJd

+1

你有沒有想過這個?我正在嘗試做同樣的事情,並且遇到同樣的問題。 – 2013-11-30 21:52:37

回答

5

我想通了!不知道這是如何在你的商店鏈接的球員做到這一點,但這是對我有用。此外,我意識到這篇文章已經過了一年多了,但我仍然在回答它,以防其他人在嘗試創建透明鍵盤時發現此問題。

您的視圖下的「某些東西」實際上什麼也沒有 - 它是空的空間。您的鍵盤將整個視圖向上推開,爲其高度騰出空間,留下空白空間。你的透明鍵盤讓這個白色空間顯示出來。

下面是解決方案:不是在onCreateInputView中返回視圖,而是在onCreateCandidatesView中返回它。這是通常位於鍵盤上方的視圖,並列出了自動更正的建議。但是你會用它來容納你的鍵盤。

你想讓你的鍵盤成爲候選者視圖的原因是因爲輸入視圖經常會將底層視圖向上推。個別應用程序可以決定如何通過android顯示鍵盤時的行爲方式:windowSoftInputMode和輸入視圖尊重其偏好,但候選視圖始終使用adjustPan。

從文檔:「請注意,因爲候選視圖往往會顯示和隱藏很多,它不會像軟輸入視圖一樣影響應用程序UI:它永遠不會導致應用程序窗口調整大小,只有在需要時才讓用戶看到當前的焦點。「 http://developer.android.com/reference/android/inputmethodservice/InputMethodService.html

所以,從onCreateCandidatesView回報您的透視圖,從onCreateInputView返回null,請確保調用setCandidatesViewShown(真),所以您的考生查看顯示出來(我叫它在onWindowShown)。

+0

這是否意味着如果應用程序的輸入位於其佈局的底部,會發生同樣的事情?爲了避免模糊它,Android會平移應用程序,使其離開屏幕頂部,在鍵盤後留下空白。 – 2014-05-06 16:48:28

+0

這就是如果你使用onCreateInputView它會做什麼。正如我所解釋的,onCreateCandidatesView的行爲不同。對它進行一點試驗;你會看到輸入保持正確的位置(除非,也許它在垂直滾動視圖中,我沒有嘗試過) – 2014-05-06 19:51:00

+0

不,如果你使用輸入視圖,Android會根據活動的設置。根據你引用的文件,候選人視圖將導致活動「如果需要讓用戶看到當前的焦點」。 – 2014-05-06 22:14:28

0

通常InputMethodServices使用與當前綁定應用程序的背景顏色相同的背景顏色。如果你想使這個透明,我認爲你應該使它成爲彈出式窗口結構,而不是我認爲的輸入法窗口。