【发布时间】:2012-08-14 09:32:07
【问题描述】:
我需要提供如图所示的设施。
在底部有 viewpager 时的第一个视图。
当用户从右到左交换时,第一个应替换为第二个。我能做到的。但是
我的问题是如何在右侧和左侧结束下一个视图的一半。
即第一视图的“第一”和第二视图的“第三”。
【问题讨论】:
-
更好地使用自定义视图
标签: android
我需要提供如图所示的设施。
在底部有 viewpager 时的第一个视图。
当用户从右到左交换时,第一个应替换为第二个。我能做到的。但是
我的问题是如何在右侧和左侧结束下一个视图的一半。
即第一视图的“第一”和第二视图的“第三”。
【问题讨论】:
标签: android
您可以在此处使用图库。每个项目的内部画廊,设置布局参数(宽度)以适应您的要求。
画廊的问题是它不会旋转项目。这意味着一旦您到达列表的末尾,您就不会获得第一项。
但也有一个技巧可以克服这一点。您需要做的就是将列表计数设置为非常大的数字 (INT_MAX),并在您的适配器中通过 % 计算小心地返回正确的视图。
这将确保您不会很快到达列表末尾。
【讨论】:
我建议查看问题的解决方案 Android ViewPager with previous and next pages visible?) - 使用负页边距(通过 ViewPager.setPageMargin)将允许您一次看到多个页面(即,在当前页面的左侧和右侧页)。
【讨论】:
您应该使用 HorizontalScrollView 而不是 gallery,因为它已从 jellybeans 版本中弃用。
http://developer.android.com/reference/android/widget/Gallery.html
【讨论】:
最后我找到了解决方案。您正在项目中使用视图寻呼机指示器的 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 文件进行这些更改。
【讨论】: