본문 바로가기

Programming/Android

[Android]Table Scroll(Vertical, Horizontal 스크롤 동시에 하기)

안드로이드에서 엑셀 처럼 스크롤을 하기 위해서는 기본제공하는 ScrollView에서는 불가능하다.

그래서 하게된 편법.

Touch Event를 받아서 제어하는 방법이 있다.

위의 화면은 아래와 같이 구성되어 있다.

  • ScrollView
    • TableLayout
  • Horizontal ScrollView
    • TableLayout
  • ScrollView 
    • Horizontal ScrollVIew
      • TableLayou

총 4개의 스크롤 뷰로 구성되어 있는데 
사용자가 화면을 Touch 한 좌표를 구해서 움직인 만큼 스크롤뷰도 함께 움직여 주는 것이 핵심이다.

순서는 아래와 같다.
  1. XML 또는 동적으로 스크롤뷰 4개 만들기
  2. Touch Event Listener 만들기
  3. Touch Event를 받아서 각각의 ScrollView에 좌표 전달해주기

- OnTouch
	
public boolean onTouch(View v, MotionEvent event) {
		switch (event.getAction()) {
		case MotionEvent.ACTION_DOWN:
			mCurrentX = (int) event.getRawX();
			mCurrentY = (int) event.getRawY();
			break;
		case MotionEvent.ACTION_MOVE:
			int movingX = (int) event.getRawX();
			int movingY = (int) event.getRawY();
			scrollBy(mCurrentX - movingX, mCurrentY - movingY);
			mCurrentX = movingX;
			mCurrentY = movingY;
			break;
		case MotionEvent.ACTION_UP:
			break;
		default:
			mCurrentX = (int) event.getRawX();
			mCurrentY = (int) event.getRawY();
			break;
		}
		mCurrentX = (int) event.getRawX();
		mCurrentY = (int) event.getRawY();
		return true;
	}



scroll.java