2015-02-10 127 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; 
    }