无对角线滚动垂直+水平滚动视图 - >表格布局
问题描述:
我在水平滚动视图中实现了一个表格布局,该视图又是垂直滚动视图的子视图。它是这样工作的;当垂直滚动或水平滚动时,它会为每种滚动类型显式滚动。平移滚动垂直水平滚动的手段完全不会发生,例如,如果手指沿对角线移动,则不会发生垂直或水平滚动。 要水平滚动,必须再次触摸它,并且只能在水平方向滚动,如果手指沿对角线移动,则不会发生垂直或水平滚动。无对角线滚动垂直+水平滚动视图 - >表格布局
似乎只有一个回调是在手指触摸的一个实例中处理的。 我也需要对角滚动,应该垂直和水平同时滚动,就像在iOS桌面视图中一样。在所有6个方向上滚动。
这是代码;
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<ScrollView
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="5dip"
android:scrollbars="none">
<HorizontalScrollView
android:id="@+id/horizontalView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dip"
android:scrollbars="horizontal|vertical">
<TableLayout
android:id="@+id/tlGridTable"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TableRow
android:id="@+id/row1"
android:layout_width="wrap_content"
android:layout_height="50dp">
<ImageView
android:layout_width="100dp"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
android:layout_margin="4dp"
android:background="@android:color/holo_green_light"/>
<ImageView
android:layout_width="100dp"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
android:layout_margin="4dp"
android:background="@android:color/holo_green_light"/>
<ImageView
android:layout_width="100dp"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
android:layout_margin="4dp"
android:background="@android:color/holo_green_light"/>
<ImageView
android:layout_width="100dp"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
android:layout_margin="4dp"
android:background="@android:color/holo_green_light"/>
<ImageView
android:layout_width="100dp"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
android:layout_margin="4dp"
android:background="@android:color/holo_green_light"/>
<ImageView
android:layout_width="100dp"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
android:layout_margin="4dp"
android:background="@android:color/holo_green_light"/>
<ImageView
android:layout_width="100dp"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
android:layout_margin="4dp"
android:background="@android:color/holo_green_light"/>
</TableRow>
<TableRow
android:id="@+id/row1"
android:layout_width="wrap_content"
android:layout_height="50dp">
<ImageView
android:layout_width="100dp"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
android:layout_margin="4dp"
android:background="@android:color/holo_green_light"/>
<ImageView
android:layout_width="100dp"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
android:layout_margin="4dp"
android:background="@android:color/holo_green_light"/>
<ImageView
android:layout_width="100dp"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
android:layout_margin="4dp"
android:background="@android:color/holo_green_light"/>
<ImageView
android:layout_width="100dp"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
android:layout_margin="4dp"
android:background="@android:color/holo_green_light"/>
<ImageView
android:layout_width="100dp"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
android:layout_margin="4dp"
android:background="@android:color/holo_green_light"/>
<ImageView
android:layout_width="100dp"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
android:layout_margin="4dp"
android:background="@android:color/holo_green_light"/>
<ImageView
android:layout_width="100dp"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
android:layout_margin="4dp"
android:background="@android:color/holo_green_light"/>
</TableRow>
<TableRow
android:id="@+id/row1"
android:layout_width="wrap_content"
android:layout_height="50dp">
<ImageView
android:layout_width="100dp"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
android:layout_margin="4dp"
android:background="@android:color/holo_green_light"/>
<ImageView
android:layout_width="100dp"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
android:layout_margin="4dp"
android:background="@android:color/holo_green_light"/>
<ImageView
android:layout_width="100dp"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
android:layout_margin="4dp"
android:background="@android:color/holo_green_light"/>
<ImageView
android:layout_width="100dp"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
android:layout_margin="4dp"
android:background="@android:color/holo_green_light"/>
<ImageView
android:layout_width="100dp"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
android:layout_margin="4dp"
android:background="@android:color/holo_green_light"/>
<ImageView
android:layout_width="100dp"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
android:layout_margin="4dp"
android:background="@android:color/holo_green_light"/>
<ImageView
android:layout_width="100dp"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
android:layout_margin="4dp"
android:background="@android:color/holo_green_light"/>
</TableRow>
---------------
----------------------
--------------------------
<TableRow
android:id="@+id/row1"
android:layout_width="wrap_content"
android:layout_height="50dp">
<ImageView
android:layout_width="100dp"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
android:layout_margin="4dp"
android:background="@android:color/holo_green_light"/>
<ImageView
android:layout_width="100dp"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
android:layout_margin="4dp"
android:background="@android:color/holo_green_light"/>
<ImageView
android:layout_width="100dp"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
android:layout_margin="4dp"
android:background="@android:color/holo_green_light"/>
<ImageView
android:layout_width="100dp"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
android:layout_margin="4dp"
android:background="@android:color/holo_green_light"/>
<ImageView
android:layout_width="100dp"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
android:layout_margin="4dp"
android:background="@android:color/holo_green_light"/>
<ImageView
android:layout_width="100dp"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
android:layout_margin="4dp"
android:background="@android:color/holo_green_light"/>
<ImageView
android:layout_width="100dp"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
android:layout_margin="4dp"
android:background="@android:color/holo_green_light"/>
</TableRow>
</TableLayout>
</HorizontalScrollView>
</ScrollView>
</LinearLayout>
答
我在这个链接上找到了答案:可能是同一个问题。
Scrollview vertical and horizontal in android
@Override
public boolean onTouchEvent(MotionEvent event) {
float curX, curY;
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mx = event.getX();
my = event.getY();
break;
case MotionEvent.ACTION_MOVE:
curX = event.getX();
curY = event.getY();
vScroll.scrollBy((int) (mx - curX), (int) (my - curY));
hScroll.scrollBy((int) (mx - curX), (int) (my - curY));
mx = curX;
my = curY;
break;
case MotionEvent.ACTION_UP:
curX = event.getX();
curY = event.getY();
vScroll.scrollBy((int) (mx - curX), (int) (my - curY));
hScroll.scrollBy((int) (mx - curX), (int) (my - curY));
break;
}
return true;
}