2014-04-04 3 views
1

내용이 화면 크기를 초과하는 뷰 플리퍼가있어서 ScrollView 안에 배치했습니다. 그러나 그렇게 한 후에는 스크롤 제스처가 ScrollView에 의해 처리되므로 뷰 플리퍼의 OnTouchEvent가 작동하지 않습니다.안드로이드의 스크롤 뷰 안에있는 ViewFlipper

스크롤보기에서 스크롤을 처리 할뿐만 아니라 자식 (ViewFlipper)이 scoll 이벤트를 처리하도록 할 수 있습니다. 이것을 어떻게 할 수 있습니까?

이 녀석의 코드와 스크롤 뷰입니다 : 내가 중첩 된 viewpager에 대한 비슷한 코드를 사용하고

<ScrollView 
    android:id="@+id/scroll" 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent"> 
     <ViewFlipper 
      android:id="@+id/flipperDetails" 
      android:layout_height="fill_parent" 
      android:layout_width="fill_parent"></ViewFlipper> 
</ScrollView> 

답변

1

이 너무있는 ScrollView을 위해 일해야합니다

public class NestedScrollView extends ScrollView { 

public NestedScrollView(Context context) { 
    super(context); 
} 

public NestedScrollView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
} 

@Override 
protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) { 
    if (v != this && v instanceof ViewFlipper) { 
     return true; 
    } 
    return super.canScroll(v, checkV, dx, x, y); 
} 
} 

을 또한 XML에있는 ScrollView 변경 NestedScrollView에.

EDIT :

canScroll DX의 델타 주어진 V의 아이 뷰 내의

테스트 스크롤 기능.

v의 하위 뷰를 dx의 delta로 스크롤 할 수있는 경우 true를 반환합니다.

+1

어떻게 작동하는지 설명 할 수 있습니다 ????? –

+0

그것은 모두 canScroll에 관한 것입니다. – Yuraj

+0

작동하지 않습니다. 하지만 나는 다른 길을 가고있어. 고마워. 친구 ... –