我需要提供設施,如圖中所示。交換android視圖
在第一視圖時,有在viewpager底部。 當用戶從右向左交換時,第一個應該換成第二個。我可以做。但是
我的問題是如何在右側和左側末端的下一個視圖的半部分。
即第一視圖的'第一'和第二視圖的'Thir'。
我需要提供設施,如圖中所示。交換android視圖
在第一視圖時,有在viewpager底部。 當用戶從右向左交換時,第一個應該換成第二個。我可以做。但是
我的問題是如何在右側和左側末端的下一個視圖的半部分。
即第一視圖的'第一'和第二視圖的'Thir'。
您可以在此處使用圖庫。在每個項目的內部圖庫中,設置佈局參數(寬度)以符合您的要求。
畫廊的問題是它不旋轉項目。這意味着一旦你到達列表的末尾,你就不會得到第一個項目。
但是也有一個竅門可以解決。您只需將列表計數設置爲非常大的數字(INT_MAX),然後在您的適配器中通過%計算仔細返回適當的視圖。
這將確保您不會很快到達列表的末尾。
畫廊類現已棄用... – himanshu 2012-08-14 10:14:04
Aww ...多數民衆贊成在悲傷..那麼我們將不得不做所有的視圖適配器馬戲團我們自己。 – 2012-08-14 10:17:26
您應該使用HorizontalScrollView代替圖庫,因爲它已從jellybeans版本棄用。
http://developer.android.com/reference/android/widget/Gallery.html
我建議你檢查出的問題Android ViewPager with previous and next pages visible?)解決方案 - 使用負頁邊距(通過ViewPager.setPageMargin
)將讓你看到多個頁面在同一時間(即左側和右側您當前的頁面)。
但問題是,我們不能把兩個viewpager放在單個活動或佈局中。 – user861973 2012-09-24 10:26:07
@ 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
最後我找到了解決辦法。您正在項目中使用視圖尋呼機指示符的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文件。
你能否發表任何評論,無論這個解決方案是否適合你? – karn 2012-09-21 07:30:12
更好的,你可以使用自定義視圖 – Ramkumar 2012-08-14 09:48:32