我正在使用一个名为FancyCoverFlow
的库,它扩展了Gallery
。我尝试添加:
android:gravity="center"
在布局中居中的子元素没有运气。画廊在整个屏幕上伸展,我将背景设为红色以确保 如何将Gallery子元素垂直居中?
答案 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
类中,因此通常您会扩展它并覆盖所述方法,但它不是公共的,因此您无权访问它。
我最终改为重复或扩展了这些类:
所以现在在我的xml中我不再使用FancyCoverFlow,而是我的 FancyCoverFlow。
这是修复bug的一个分支: https://github.com/Mehdiway/FancyCoverFlow
答案 1 :(得分:0)
我像你一样试过这个lib,但没有运气。所以我建议你把它放在一个匹配父宽度和高度的布局(RelativeLayout,FrameLayout,LinearLayout ...)中,然后将paddingTop设置为你的FancyCoverFlow。