HorizontalScrollView로 리스트뷰를 감싸는 것 만으로도 가로세로 스크롤이 되긴 합니다만 대각선 이동이 안되서 혼용스크롤자료를 찾아 보았습니다.
그래서 이렇게 코딩을 했습니다.
전역변수
private HorizontalScrollView Hscroll = null; //가로 스크롤
protected int currentX = 0; //터치 좌표 저장X
protected int currentY = 0; //터치 좌표 저장Y
private ListView lvFindDataList = null; //검색용 데이터 리스트
메인 엑티비티
//검색용 데이터 리스트
lvFindDataList = (ListView) findViewById(R.id.lvData);
//검색리스트 가로세로 스크크롤
Hscroll = (HorizontalScrollView)findViewById(R.id.svHorizontal);
Hscroll.setOnTouchListener((OnTouchListener)otlScroll);
lvFindDataList.setOnTouchListener((OnTouchListener)otlScroll);
//혼용스크롤용 함수
public void ScrollBy(int intX, int intY )
{
Hscroll.scrollBy(intX, 0);
lvFindDataList.scrollBy(0, intY);
}//end ScrollBy
//터치리스너
OnTouchListener otlScroll = new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
switch( event.getAction() )
{
case MotionEvent.ACTION_DOWN:
currentX = (int)event.getRawX();
currentY = (int)event.getRawY();
break;
case MotionEvent.ACTION_MOVE:
int x2 = (int)event.getRawX();
int y2 = (int)event.getRawY();
ScrollBy(currentX - x2, currentY - y2);
currentX = x2;
currentY = y2;
break;
case MotionEvent.ACTION_UP:
break;
}
return false;
}
}; //end OnTouchListener
이 코드는 일반적으로 큰 이미지를 혼용스크롤하기 위해 사용하는 코드를 리스트뷰에 적용한 것입니다.
당연이 정상작동을 하는데
문제는 이 코드는 뷰자체를 이동시키는 코드라 리스트 뷰자체가 이동하는 문제가 발생합니다 ㅡ,.ㅡ;;
lvFindDataList.scrollBy(0, intY);
를 지우면 가로이동하면서 세로이동이 안되지만 세로이동후 가로이동은됩니다.
제생각에는 scrollBy는 아이탬을 이동시키는게 아니라 뷰자체를 이동시키는 것 같아 scrollTo도 해보고 몇가지 해보았으나....
원하는데로 작동이 안하네요 ㅜㅡ
이거 해결 방법 없을까요?