2011-11-22 2 views
0

실제로 드로어 블을 보여주는 갤러리가 있는데, 화면 중앙에 선택한 항목이 표시됩니다.갤러리에서 "중심에서 벗어난"갤러리를 만드는 방법

내가 선택한 항목을 "중심에서 벗어남"(예 : 왼쪽에 50dpi로 배치)하고 싶습니다.

보기 및 갤러리에 패딩을 추가하려고했습니다. 또한 내 갤러리의 중력이 "가운데"에 설정되어 있지 않음을 확인했습니다.

그런데 갤러리의 일반적인 동작은 선택한 항목을 화면 중앙에 표시하는 것입니다.

선택한 항목의 위치를 ​​이동할 수있는 방법이 있습니까?

고맙습니다. 필요한 경우 내 코드를 추가 할 수 있습니다.

+0

나는 당신이 ... 그것을 어떻게하는지보고 당신에게 몇 가지 단서를 줄 것이다 메이비하는 갤러리의 소스 코드를 탐색해야한다고 생각 – Sephy

+0

좋아, 당신은 대답은 간단하다 말했듯이 : 갤러리에 X 매개 변수를 스크롤 할 50dip 추가 . – Thordax

답변

1

나는 결국 대답을 얻었다.

먼저 ScrollX를 원하는 픽셀 간격에 해당하는 특정 값으로 설정해야합니다.

그러나 유일한 해결책은 항목을 선택하는 것이 아니라 화면 중심을 클릭해야한다는 것입니다. 이는 공정하지 않습니다.

둘째, 당신은 다음과 같이 (onItemTapListener 예를 들어라고도 함)이 하나 OnDoubleTapListener를 구현하고 그에게 사용자 정의 리스너를 추가, 갤러리를 오버라이드 (override) 할 필요가 :

public void setOnTapItemMenuListener(OnTapItemMenuListener listener) { 
    onTapItemMenuListener = listener; 
} 

나는 나의 새로운 리스너를 구현하기 위해이 같은 인터페이스를 만든 :

public interface OnTapItemMenuListener { 
    public abstract void onTap(int intPosition); 
} 

때문에 OnDoubleTapListener의 구현의 구현 "onSingleTapConfirmed"행사에 , 당신은 예를 들어 다음과 같이 이벤트를 캐치하고 특정 위치에 event.getX()가 있는지 확인 :

if (event.getX()/intWidth > 0.20f && event.getX()/intWidth < 0.45f) { 
    Log.i("TAG", "onSingleTapConfirmed on the right area, we launch onTap for the Listener"); 
    onTapItemMenuListener.onTap(this.getSelectedItemPosition()); 
} else { 
    Log.i("TAG", "onSingleTapConfirmed on the wrong area, we don't launch onTap for the Listener"); 
} 

여기서 intWidth는 현재 화면의 픽셀 단위의 너비입니다.

관련 문제