2014-07-14 1 views
1

세로 맞춤 목록이 있고 세로 목록의 각 항목에 가로 목록보기가 있습니다. 가로로 스크롤하면리스트도 조금씩 움직입니다. 따라서 사용자에게 친숙하지 않습니다. 가로로 스크롤하는 동안 세로 스크롤을 사용 중지 할 수 있습니까? 나는사용자가 안드로이드에서 수평으로 스크롤 할 때 수직 스크롤을 사용하지 않음

+0

안녕하세요, 아래의 대답은 Shivam 베르을 poted 시도 perfact 당신의 수평 목록보기 onScroll 방법에

넣어 주어 코드는 작동합니다. 그것의 작동하지만 HorizontalListView의 영역에서 위아래로 스 와이프를 시작하면 HLV는 스크롤 만합니다. 다른 해결책이 있다면 pls가 공유합니다. –

+0

[TwoWayView] (https://github.com/lucasr/twoway-view/)를 사용해 보시지 않겠습니까? – Umesh

답변

4

아이디어는 터치 이벤트를 가로 챌 수 상위 목록보기를 비활성화하는 것입니다 수평 목록보기를

<com.devsmart.android.ui.HorizontalListView 
     android:id="@+id/hlistview" 
     android:layout_width="match_parent" 
     android:layout_height="155dp" 
     android:layout_margin="6dp" 
     android:background="#fff" 
     android:fitsSystemWindows="true" 
    /> 

을 사용하고 있습니다. 이 작업을 수 있습니다

HorizontalListView hv = (HorizontalListView)findViewById(R.id.hlistview); 
    hv.setOnTouchListener(new ListView.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       int action = event.getAction(); 
       switch (action) { 
       case MotionEvent.ACTION_DOWN: 
        // Disallow ListView to intercept touch events. 
        v.getParent().requestDisallowInterceptTouchEvent(true); 
        break; 

       case MotionEvent.ACTION_UP: 
        // Allow ListView to intercept touch events. 
        v.getParent().requestDisallowInterceptTouchEvent(false); 
        break; 
       } 

       // Handle HorizontalScrollView touch events. 
       v.onTouchEvent(event); 
       return true; 
      } 
     }); 

참고 :이 작업을 수행하는 https://stackoverflow.com/a/22609646/1239966

0

가장 좋은 방법입니다.

ViewParent view_parent = getParent(); 
if (view_parent != null) 
{ 
view_parent.requestDisallowInterceptTouchEvent(true); 
}