關於EditText與ScrollView巢狀使用時候出現的Edittext自動滾動至最頂部的問題
Text與ScrollView巢狀使用時候出現的Edittext自動滾動至最頂部的問題
安卓中一般來說用ScrollView巢狀過長的LinlyLayout來顯示不確定長度的佈局,
當該線性佈局中嵌套了Edittext的時候會出現種種問題:
1,Edittext中的文字過長時候無法垂直滾動
2,Edittext中的文字過長時候,如果再次獲取焦點則會使EditText向上滾動過多以至於無法正常顯示文字
對於第一種的處理方式多種,我的習慣是重寫Edittext的onTouchEvent();在裡面加上如下程式碼加以處理:
@Override public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_MOVE) this.getParent().requestDisallowInterceptTouchEvent(true); return super.onTouchEvent(event); }
對於第二種情況,本人找了很多相關的帖子都沒有真的解決本人的問題,無賴之下查看了ScrollView的官方文件
發現如下回調方法:
public boolean requestChildRectangleOnScreen(View child,Rect rectangle, boolean immediate) { return false; }
這個回撥是在控制子view是否被固定於一個相對的位置,複寫之後如下:
public boolean requestChildRectangleOnScreen(View child, Rect rectangle, boolean immediate) { if (child instanceof EditText) return true; return false; }然後問題就解決了