2015-06-08 4 views
0

Я использую библиотеку под названием FancyCoverFlow, которая расширяет Gallery. Я пробовал добавить:Android - элементы галереи центра по вертикали

android:gravity="center" 

в макете к центру детские элементы без везения. Галерея растянулась на весь экран, я сделал свой фон красным, чтобы убедиться.
Как вы центрируете элементы галереи Gallery вертикально?

ответ

1

Библиотека больше не поддерживается, но я отправляю решение в любом случае.
Специфическая линия вы должны изменить последний один в методе dispatchDraw(Canvas canvas) в FancyCoverFlowItemWrapper классе:

От:

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

To:

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, но M y FancyCoverFlow вместо этого.

Вот вилка исправлена ​​ошибка: https://github.com/Mehdiway/FancyCoverFlow

0

Я пробовал эту библиотеку, как вы, но не повезло. Поэтому я предлагаю вам просто поместить его в макет (RelativeLayout, FrameLayout, LinearLayout ...) с шириной и высотой родительского столбца, а затем установить paddingTop в свой FancyCoverFlow.

+1

Я отказываюсь сдаваться. Я сейчас копаю исходный код, желаю мне удачи. – Mehdiway

+1

Goodluck и вернитесь, когда вы закончите с лучшим решением. Благодаря ! – NamNH

Смежные вопросы