天天看點

scrollview裡面嵌套gridview問題

有個項目 要求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);

        }  

      };