2012-08-14 1 views
6

이미지와 같이 시설을 제공해야합니다. 스왑 안드로이드 조회

enter image description here

제 감안

Second View

하단 viewpager가

. 사용자가 오른쪽에서 왼쪽으로 스왑하면 첫 번째가 두 번째로 바뀝니다. 내가 할 수있다. 하지만
내 질문은 어떻게 오른쪽의 끝에 그리고 왼쪽의 다음보기의 절반 부분입니다.

즉 첫 번째보기의 '처음'과 두 번째보기의 'Thir'.

+0

더 잘 사용자 정의보기를 사용할 수 있습니다 – Ramkumar

답변

6

여기 갤러리를 사용할 수 있습니다. 각 항목에 대한 갤러리 내부에서 요구 사항에 맞게 레이아웃 매개 변수 (너비)를 설정하십시오.

갤러리와 관련된 문제는 항목을 회전시키지 않는다는 것입니다. 즉, 일단 목록의 끝에 도달하면 첫 번째 항목을 얻지 못합니다.

하지만 너무 오지 마세요. 목록 개수를 매우 큰 수 (INT_MAX)로 설정하고 어댑터에서 % 계산을 통해주의 깊게 적절한보기를 반환하면됩니다.

이렇게하면 곧 목록의 끝에 도달하지 않을 것입니다.

+2

갤러리 클래스는 이제 더 이상 사용되지 않습니다 ... – himanshu

+0

아 ... 그 ... 슬픈 .. 그러면 우리는 모든 뷰 어댑터 서커스를해야 할 것입니다. –

5
내가 질문 Android ViewPager with previous and next pages visible?)에 대한 솔루션을 체크 아웃 좋을 것

- (왼쪽과 오른쪽의에, 즉 시간 (여러 페이지를 볼 수 있습니다) ViewPager.setPageMargin를 통해 음의 페이지 여백을 사용하여 귀하의 현재 페이지).

+0

하지만 하나의 활동이나 레이아웃에 두 개의 뷰 페이지를 넣을 수 없다는 것이 문제입니다. – user861973

+0

@ user861973 - 아, 게시글에 '하단에 뷰 페이지가 있습니다.'라는 메시지가 표시됩니다. 따라서 왜 당신은 이미 하단 스크롤바에 ViewPager를 사용하고 있으며 메인 콘텐츠에는 사용하지 않았다고 생각했습니다.이 경우 [ViewPagerIndicator] (http://viewpagerindicator.com/) 및 특히 [TabPageIndicator] (https://github.com/JakeWharton/Android-ViewPagerIndicator/blob/master/library/src/)를 사용하여 제안 할 수 있습니다. com/viewpagerindicator/TabPageIndicator.java). 이 경우 레이아웃 자체에서 음수 여백을 사용하여 사이드 탭 이미지를 절반 만 보여줄 수 있습니다. – ianhanniballake

2

마지막으로 해결책을 찾았습니다. 프로젝트에서 페이징 표시기 표시기의 TitlePageIndicator를 사용하고 있습니다. 이 효과를 얻으려면 TitlePageIndicator 클래스를 약간 수정해야합니다.
아이디어는 왼쪽의 텍스트를 크기의 절반 크기 (아무것도 될 수 있음)만큼 오른쪽으로 이동시키고 오른쪽의 텍스트를 크기의 절반만큼 오른쪽으로 이동시키는 것입니다 아무것도). 좌측 방법이 사용된다 clipViewOnTheLeft (...)에 텍스트에 대한 범위를 설정 및 법을 사용 오른쪽 clipViewOnTheRight (...)에 텍스트로 경계를 설정

. 여기서 수정해야합니다.

/** 
* Set bounds for the right textView including clip padding. 
* 
* @param curViewBound 
*   current bounds. 
* @param curViewWidth 
*   width of the view. 
*/ 
private void clipViewOnTheRight(RectF curViewBound, float curViewWidth, int right) { 
    curViewBound.right = right - mClipPadding + curViewWidth/2; 
    curViewBound.left = curViewBound.right - curViewWidth; 
} 

/** 
* Set bounds for the left textView including clip padding. 
* 
* @param curViewBound 
*   current bounds. 
* @param curViewWidth 
*   width of the view. 
*/ 
private void clipViewOnTheLeft(RectF curViewBound, float curViewWidth, int left) { 
    curViewBound.left = left + mClipPadding - curViewWidth/2; 
    curViewBound.right = mClipPadding + curViewWidth; 
} 

당신은 TitlePageIndicator.java 파일에 이러한 변경 작업을 수행해야합니다 여기


은 당신이해야 할 것입니다.

+0

이 솔루션이 귀하에게 효과적 이었는지 여부에 관계없이 의견을 게시 할 수 있습니까? – karn