有個項目 要求scrollview裡包含一些imgview textview還有gridview,觸摸屏滑動沒遇到什麼問題。
但是按鍵操作,焦點已經移出螢幕外了頁面卻沒有跟着滾動。可能是scrollview和gridview都有滾動 互相有沖突了,看了許久也沒看出什麼道道。
那麼我就用最原始的方法來解決了,頁面滾動可以自己控制scrollview滾動。
1.擷取資料
WindowManager wm = this.getWindowManager();
screenWidth = wm.getDefaultDisplay().getWidth();//擷取螢幕寬度
int[] location =new int[2];
arg1.getLocationOnScreen(location);
int x = location[0];//擷取目前item在螢幕中的x坐标,因為我做的是橫向滾動。
viewWidth = arg1.getMeasuredWidth();//擷取item的寬度
int n = scrollView.getScrollX();//擷取目前scroll在頁面中的x坐标
2.計算
具體的我就不多說了,有了上面的那麼資料加加減減就可以實作了.下面貼上相關代碼。
gview.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
Ipostion = arg2;
Iview = arg1;
int[] location =new int[2];
arg1.getLocationOnScreen(location);
viewWidth = arg1.getMeasuredWidth();
int x = location[0];
if (gview.KeyRight) {
if((x+viewWidth)>screenWidth){
scrollD = (x+viewWidth)-screenWidth;
mhandler.post(mScrollRunnable);
}
}else if (gview.KeyLeft) {
if(x<=0){
if (arg2==0)
scrollD = -(viewWidth+gridviewSpacing);
else
scrollD = x;
mhandler.post(mScrollRunnable);
}
}
Log.d(TAG,"ddddddddddddd"+scrollD);
}
}
Handler mhandler = new Handler();
private Runnable mScrollRunnable = new Runnable() {
public void run() {
Log.d(TAG,"scroll......scroll");
int n = scrollView.getScrollX();
scrollView.scrollTo(n+scrollD, 0);
}
};