布局:
父布局是一個RelativeLayout,最上面是一個頂部標題,中間是一個ListView,
最下面是一個包含EditText的LinearLayout。
大概寫法就是
標題android:layout_alignParentTop="true"
包含EditText的LinearLayout android:layout_alignParentBottom="true"
中間的ListView
android:layout_below="標題"
android:layout_above="底部LinearLayout"
這是未點擊EditText,軟鍵盤未彈出時的位置
問題:
android:windowSoftInputMode="stateHidden|adjustResize"
android:windowSoftInputMode="stateHidden|adjustPan"
如果將設置為adjustPan,點擊EditText軟鍵盤彈出,會以當前EditText的位置為七點
彈出軟鍵盤,軟鍵盤的上方會平齊EditText的底線,但是因為EditText是包含在
LinearLayout裡面,所以會覆蓋EditText下方屬於LinearLayout的一部分布局。
這是屬性設為adjustPan時,點擊EditText彈出軟鍵盤的布局,沒有跳轉到ListView的
底部,直接在原始位置彈出軟鍵盤,頂部知道EditText的光標為止,覆蓋了LinearLayout的部分布局
如果將設置為adjustResize,點擊EditText軟鍵盤彈出,會定位到ListView的最後一個Item,然後向上撐起布局,沒有覆蓋布局。
這是屬性設為adjustResize時的效果,會跳到ListView的最後一個Item,然後從這裡將上方所有布局頂起來,但沒有覆蓋
不知道大家有沒有好的建議和經驗來解決這個問題,求教。
找到問題原因了,是因為我的ListView設置了android:transcriptMode="alwaysScroll"屬性,去掉就好了。
android:windowSoftInputMode設置為"stateHidden|adjustUnspecified"其實在我這裡adjustUnspecified應該等價於ReSize吧
沒做實驗驗證。恩,總之,謝謝大家了。