Android - 纵向中心图库元素

时间:2015-06-08 15:21:08

标签: android android-gallery

我正在使用一个名为FancyCoverFlow的库,它扩展了Gallery。我尝试添加:

android:gravity="center"

在布局中居中的子元素没有运气。画廊在整个屏幕上伸展,我将背景设为红色以确保 如何将Gallery子元素垂直居中?

2 个答案:

答案 0 :(得分:1)

图书馆已不再维护,但无论如何我都在发布解决方案 您必须修改的具体行是dispatchDraw(Canvas canvas)类中方法FancyCoverFlowItemWrapper中的最后一行:

来自:

canvas.drawBitmap(this.wrappedViewBitmap, (float)((this.getWidth() - childView.getWidth()) / 2), 0, this.paint);

致:

canvas.drawBitmap(this.wrappedViewBitmap, (float)((this.getWidth() - childView.getWidth()) / 2), (float)((this.getHeight() - childView.getHeight()) / 2), this.paint);

而不是在top = 0处绘制视图,而是计算中间值并使用它 FancyCoverFlowItemWrapper实例化驻留在FancyCoverFlowItem类中,因此通常您会扩展它并覆盖所述方法,但它不是公共的,因此您无权访问它。

我最终改为重复或扩展了这些类:

  • FancyCoverFlow - > MyFancyCoverFlow
  • FancyCoverFlowAdapter - > MyFancyCoverFlowAdapter
  • FancyCoverFlowItemWrapper - > MyFancyCoverFlowItemWrapper

所以现在在我的xml中我不再使用FancyCoverFlow,而是我的 FancyCoverFlow。

这是修复bug的一个分支: https://github.com/Mehdiway/FancyCoverFlow

答案 1 :(得分:0)

我像你一样试过这个lib,但没有运气。所以我建议你把它放在一个匹配父宽度和高度的布局(RelativeLayout,FrameLayout,LinearLayout ...)中,然后将paddingTop设置为你的FancyCoverFlow。