2015-02-10 100 views
3

我在水平滚动视图中实现了一个表格布局,该视图又是垂直滚动视图的子视图。它是这样工作的;当垂直滚动或水平滚动时,它会为每种滚动类型显式滚动。平移滚动垂直水平滚动的手段完全不会发生,例如,如果手指沿对角线移动,则不会发生垂直或水平滚动。 要水平滚动,必须再次触摸它,并且只能在水平方向滚动,如果手指沿对角线移动,则不会发生垂直或水平滚动。无对角线滚动垂直+水平滚动视图 - >表格布局

似乎只有一个回调是在手指触摸的一个实例中处理的。 我也需要对角滚动,应该垂直和水平同时滚动,就像在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> 

回答

1

我在这个链接上找到了答案:可能是同一个问题。

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; 
    }