2016-09-21 277 views
0

如果您看一下IFTTTTumblr的工作方式,您將看到當您單擊登錄表單輸入並且鍵盤顯示時,徽標將被移除,並顯示一個很酷的動畫。我想要做類似的事情,所以我已經搜索了一些關於檢測軟鍵盤顯示/隱藏事件的信息,但是我發現的解決方案(如thisthis)都不可靠。當鍵盤顯示時隱藏元素

我該如何實現這種行爲?

我的登錄屏幕有點擁擠,所以我需要隱藏元素,當鍵盤顯示或否則他們不適合所有可能的屏幕配置。

回答

1

我有這個相同的問題。

在我的應用程序,主屏幕有一個EditText搜索以及一個不錯的大標誌。當用戶按EditText輸入搜索詞時,軟鍵盤將彈出並壓縮佈局,使得使用adjustResize看起來與使用adjustPan一樣差。

當鍵盤顯示了做就怎麼告訴了一些研究和閱讀this rant from Dianne Hackborn告訴我們,我們真的不應該護理當鍵盤顯示出來,我決定重新考慮這一點,並把它看作是一個佈局問題後。只有當佈局的高度低於某個閾值時,我纔有問題。

我爲主佈局創建了一個子類,覆蓋onLayout(),當a)佈局高度從低於閾值到高於閾值時,觸發回調事件,以及b)高度從高於閾值到低於閾值。根據它的走向,我會開始播放動畫,以移除徽標或重新顯示它。

我不會在這裏發佈該代碼,因爲如果我現在要做,我只需要使用ViewTreeObserver.OnGlobalLayoutListener來了解佈局何時更改。它與this answer最相似,不同之處在於不是測試高度變化量,而是設置一定的閾值並在高度超過閾值時運行適當的動畫。

+0

你說得對,我以錯誤的方式面對問題。鍵盤是無關緊要的,是重要的佈局大小。這讓人大開眼界! –