年前做的功能遇到問題,年尾來清倉。
因為製作的view比較複雜,是個LinearLayout包著EditText和Textview,
需要做鍵盤出現某個複合的view被頂上來的功能。
必須監聽軟件盤出現的時間點。
因為製作的view比較複雜,是個LinearLayout包著EditText和Textview,
需要做鍵盤出現某個複合的view被頂上來的功能。
必須監聽軟件盤出現的時間點。
adjustPan
這個很好用,但因為我的Textview擺在EditText下面,會發現被頂上來的只有EditTextandroid:windowSoftInputMode="adjustresize"
這個只適合你的view在最下面的情況才會頂上來,萬一view在中下方(非底部)也是不會頂上來。- 既然要做到複合view鍵盤打開,
要判斷他是否被蓋到,如果蓋到,則頂上來,沒蓋到,則不動。
只能自己算view移動的位置。還好需要頂上來的view是跟著listview,
只需要抓listview item高度、畫面高度、複合view高度去算移動位置。
但必須要監聽到軟鍵盤打開事件才能算高度。 - 最初找到覺得比較好的解法可能是在
onConfigurationChanged
寫軟鍵盤事件,
但其實真的寫了發現根本沒用。
https://stackoverflow.com/questions/24388492/listen-for-keyboard-show-or-hide-event-in-android - 就只剩用
addOnGlobalLayoutListener
抓事件,我是覺得不太好,
因為萬一是其他因素導致布局改變,可能無法精準抓到鍵盤事件。
- 為此有跟 stackoverflow 的大大討論,但看來他跟我研究的結果是一樣。
Google並沒有提供特定API,或許未來會有。
但後來發現我是可以抓addOnGlobalLayoutListener
,因為我沒有布局其他改變因素。
https://stackoverflow.com/questions/41509192/how-to-make-android-soft-keyboard-showing-or-hiding-listener-better
Code:
|
|
沒有留言:
張貼留言