交换android视图

时间:2012-08-14 09:32:08

标签: android

我需要提供如图所示的设施。

enter image description here

Second View

在第一个视图中,底部有viewpager。 当用户从右向左交换时,第一个应该替换为第二个。我能做到的。但
我的问题是如何在右侧和左侧的末端观看下半部分的下半部分。

即第一视图的“第一”和第二视图的“第三”。

4 个答案:

答案 0 :(得分:6)

您可以在此处使用图库。每个项目的内部图库,设置布局参数(宽度)以符合您的要求。

图库的问题是它不会旋转项目。这意味着一旦到达列表的末尾,就不会得到第一个项目。

但也有一个伎俩过来。您需要做的就是将列表计数设置为非常大的数字(INT_MAX),并在您的适配器中通过%计算小心地返回正确的视图。

这将确保您不会很快到达列表的末尾。

答案 1 :(得分:5)

我建议查看问题Android ViewPager with previous and next pages visible?的解决方案) - 使用负页边距(通过ViewPager.setPageMargin)将允许您一次看到多个页面(即左侧和你当前页面的右边。)

答案 2 :(得分:4)

你应该使用Horizo​​ntalScrollView而不是gallery,因为它是从jellybeans版本中弃用的。

http://developer.android.com/reference/android/widget/Gallery.html

答案 3 :(得分: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文件进行这些更改。