2012-08-14 46 views
6

我需要提供設施,如圖中所示。交換android視圖

enter image description here

Second View

在第一視圖時,有在viewpager底部。 當用戶從右向左交換時,第一個應該換成第二個。我可以做。但是
我的問題是如何在右側和左側末端的下一個視圖的半部分。

即第一視圖的'第一'和第二視圖的'Thir'。

+0

更好的,你可以使用自定義視圖 – Ramkumar 2012-08-14 09:48:32

回答

6

您可以在此處使用圖庫。在每個項目的內部圖庫中,設置佈局參數(寬度)以符合您的要求。

畫廊的問題是它不旋轉項目。這意味着一旦你到達列表的末尾,你就不會得到第一個項目。

但是也有一個竅門可以解決。您只需將列表計數設置爲非常大的數字(INT_MAX),然後在您的適配器中通過%計算仔細返回適當的視圖。

這將確保您不會很快到達列表的末尾。

+2

畫廊類現已棄用... – himanshu 2012-08-14 10:14:04

+0

Aww ...多數民衆贊成在悲傷..那麼我們將不得不做所有的視圖適配器馬戲團我們自己。 – 2012-08-14 10:17:26

5

我建議你檢查出的問題Android ViewPager with previous and next pages visible?)解決方案 - 使用負頁邊距(通過ViewPager.setPageMargin)將讓你看到多個頁面在同一時間(即左側和右側您當前的頁面)。

+0

但問題是,我們不能把兩個viewpager放在單個活動或佈局中。 – user861973 2012-09-24 10:26:07

+0

@ user861973 - 啊,你的帖子說'有viewpager在底部',因此我以爲你已經在使用ViewPager作爲底部滾動條而不是主要內容。在這種情況下,我可能會建議使用[ViewPagerIndicator](http://viewpagerindicator.com/),特別是[TabPageIndicator](https://github.com/JakeWharton/Android-ViewPagerIndicator/blob/master/library/src/ COM/viewpagerindicator/TabPageIndicator.java)。在這種情況下,您可能只想在佈局中使用負邊距,以將側邊選項卡圖像僅顯示一半。 – ianhanniballake 2012-09-26 01:44:46

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 2012-09-21 07:30:12