有个项目 要求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);
}
};