2010-08-04 119 views
1

我有一個佈局,其頂部有一個大的EditText視圖+底部有一堆按鈕。使用adjust_resize激活/取消激活時,EditText被縮小和展開。底部的按鈕被推到了ime的上方。Android軟鍵盤:如何在鍵盤上打開/關閉操作視圖

我想在ime顯示時隱藏這些按鈕,爲EditText視圖提供足夠的空間。

到目前爲止我試過如下:

  • 子類的EditText和提供的活動對視圖的OnSizeChanged註冊一個回調的選項。

  • 使用此回調將按鈕(實際上是佈局容器)的可見性更改爲GONE。

這個工作正常,彈出ime時會隱藏按鈕。 但是,EditText不會擴展到新的可用空間。 此外,當ime處於關閉狀態時,EditText字段現在比原來大,將屏幕外的按鈕(現在顯示)按下。

我還應該補充說,當在視圖中輸入第一個字母,並且ime顯示單詞選項時,屏幕被重新繪製並且EditText填充空白空間。

關於如何使這項工作的任何想法? 甚至更​​好,是否有更簡單的解決方案來滿足我的要求?

謝謝...

NB:在我看來,滾動不是一個好的選擇。

回答

1

我得到這個通過改變上述方法有點工作:用的FrameLayout

  • 包裹整個佈局

  • 子類中的FrameLayout和提供的活動上註冊一個回調選項佈局的OnMeasure

這使活動有機會在測量之前改變視圖的可見性。

我仍然很樂意聽到更簡單的解決方案,特別是關於確定鍵盤當前是否可見的問題。 (dumpsys窗口顯示這個信息,我們可以輕鬆搞定它嗎?)

0

您是否嘗試過撥打myView.invalidade()

我正在使用GONE屬性,但後來更改爲button.setVisibility(View.INVISIBLE);,因爲我的屏幕上沒有任何其他內容。

關於adjust_resize,當鍵盤消失並再次顯示按鈕時,您需要再次檢查。

+0

謝謝@Eduardo。 我試過myView.invalidade()。沒有運氣。 我需要使用GONE,因爲我想要按鈕佔用的空間。 當鍵盤消失時,我已經檢查並將可見性更改爲可見。我已經描述了結果。 再次感謝。 – OferR 2010-08-04 21:25:09