React Native DrawerLayout: тень на дочернем элементе появляется на iOS, но не на Android - PullRequest
0 голосов
/ 02 мая 2018

У меня есть приложение, которое использует Экспо GestureHandler.DrawerLayout со стилем ящика "back", так что вид лежит на неподвижном ящике и скользит, чтобы показать его. Чтобы подчеркнуть это расположение, я хотел добавить тень к содержимому View, наложенному на содержимое ящика. Пока что у меня это работает на iOS, но не на Android.

Чтобы изучить это в отрыве от остальной части моего приложения, я разветвил проект response-native-жест-обработчик и изменил пример приложения horizontalDrawer. Я добавил стиль реквизита для тени здесь:

https://github.com/kmagiera/react-native-gesture-handler/compare/2542bd39503412ef00883e0e799caf7d1f68ef3a...brettdh:shadows-broken-on-android

Как вы можете видеть на этом скриншоте , тень появляется на iOS, но не на Android. Однако, если я удаляю абсолютное позиционирование, комментируя эту строку , я вижу, что тень фактически обрезается слева, как вы можете видеть на этом скриншоте .

Я немного покопался в дереве компонентов и попробовал:

  • перемещение теневого упора в обертку View
  • очистка overflow: hidden
    • (хотя теперь я понимаю, что overflow: visible работает только на iOS)

Я обнаружил, что обсуждения описывают это как какое-то отношение к абсолютному позиционированию, но даже если это так, я не думаю, что смогу этого избежать, поскольку это часть самого DrawerLayout. Есть мысли о том, как можно добиться одинакового эффекта тени на iOS и Android?

1 Ответ

0 голосов
/ 03 мая 2018

Некоторые дальнейшие исследования показывают, что DrawerLayout помещает a View вокруг моего компонента , который (вероятно) обрезает тень. Если я вместо этого добавлю свою elevation опору View (вместе с backgroundColor), тень больше не будет обрезана.

Это, вероятно, означает, что мне нужно сделать PR, чтобы включить пользовательские стили для этой оболочки View.

...