本帖最後由 jasononlie 於 2016-2-26 11:53 編輯
沒什麼大神可以幫助我,我自己研究了一些解決方式,有機會幫助到大家的話,大家就加減參考囉。
爬了很多文,也有許多人與到我一樣的問題,大家普遍認為是BUG,等官方修復或忽略它的方式。
我想了一下 如果再onFocus的情況下會跳出錯誤訊息那我就使用Scroll往上滾滾到因該消失的時候取消該EditView得Focus.
已下是我的代碼 : 我使用在Fragment中:
首先介紹一下 我的ScrollView中有14個EditView.
public ScrollView sv;
public View onCreateView( ....)
{
sv = (ScrollView)view.findViewById(R.id.scrollViewtest);
sv.setOnTouchListener(new View.OnTouchListener() {
public int TotalH=0;
public int oneH=0;
@Override
public boolean onTouch(View v, MotionEvent event) {
if(TotalH==0) TotalH = v.getHeight(); //取總長
if(oneH==0) oneH = TotalH/14; //14 = Number Of EditView about this page. ,每一個EditView的長度
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN : //Scroller被按下
break;
case MotionEvent.ACTION_MOVE : //Scroller被移動
//getScrollY()會取rollBar頂端的位座標
int nowPostion = v.getScrollY()/oneH; //nowPostion 表示說滾動條滾掉到第幾個EditView的底端了
for(int i=0;i<nowPostion;i++)
{
//當移動得時候,判斷移動到哪邊 再對已經滾到看不見的EditView取消Focus
//我假設editText[14]這樣來表示。
editText.clearFocus();
}
break;
case MotionEvent.ACTION_UP: //Scroller被結束一次滑的動作
break;
default :
break;
}
return false;
}
});
}
這Code很陽春如果有幫到其他人就加減參考了,如果有高手有此問題的解答,還懇請教學。 |