안드로이드 개발 질문/답변
(글 수 45,052)
리스트뷰 혹은 그리드뷰에서
스크롤 동작이 안되도록 강제로 막는 방법이 있나요?
제공되는 메소드가 있을것 같은데 찾아봐도 안나와서 질문드립니다.
2010.12.10 20:05:54
저눈 리스트뷰를 상속받은 뷰를사용하여 처리하였어요. 상속받은 뷰에서 온터치 이벤트를 오버라이딩해서 막았죠 ㅎㅎ 어뎁터 사용하면서 막고싶어서 그러시죠?? ㅎㅎ
2011.02.01 15:59:28
testActivity
TestListView testList = new testList();
@Override
public boolean onTouchEvent(MotionEvent ev) {
// TODO Auto-generated method stub
//return super.onTouchEvent(ev);
return false;
}
}
2011.02.01 23:40:08
위에서처럼 이벤트핸들러 자체를 상속받아 막거나...
아니면 스크롤 숨기고 클릭 불가능하게 하고 위에 투명위젯 하나 씌우고 background로 보이게 하면될것같긴한데.. 많이 비효율적일듯하네요. 저도 찾아보니까 리스트뷰자체에서 지원하는 메쏘드는 없는것같습니다.
아니면 스크롤 숨기고 클릭 불가능하게 하고 위에 투명위젯 하나 씌우고 background로 보이게 하면될것같긴한데.. 많이 비효율적일듯하네요. 저도 찾아보니까 리스트뷰자체에서 지원하는 메쏘드는 없는것같습니다.
2011.11.07 19:14:11
저 같은 경우는 onScrollChanged 를 override 해서 아래와 같이 했더니 잘 먹습니다.
@Override //스크롤 막음
public void onScrollChanged(int x, int y, int x2, int y2){
Util.log(" x-position = " + x + " this.getWidth() = " + this.getWidth() );
if(x < this.getWidth()){
scrollTo(0, 0);
return;
}
}
저의 경우는 가로뷰였는데, 그래서 x좌표가 this.getWidth() 즉 해당 뷰의 가로 크기보다 작을 때,
바로 scrollTo(0,0) 로 박아주었더니 가로 스크롤이 안 움직이네요. 세로 뷰 같은 경우는 y와 getHeight()를 쓰면 되겠네요.



