1

我看到 Android AppBarheight在更改页面时对其进行动画处理。

这是我的AppBar.js

import React from 'react';
import { Appbar as AppBarDefault } from 'react-native-paper';
import Logo from '../Logo';

const {
  Header,
  BackAction,
  Content,
  Action,
} = AppBarDefault;

export default class AppBar extends React.Component {
  render() {
    const { nav, pages, previous } = this.props;
    return (
      <Header statusBarHeight={Constants.statusBarHeight}>
        {previous ? (
          <BackAction onPress={() => nav.goBack()} />
        ) : (
          <Action
            icon="menu"
            onPress={nav.openDrawer}
          />
        )}
        <Content
          title={<Logo />}
          style={{ alignItems: 'center' }}
        />
        <Action icon="account-supervisor-circle" onPress={() => nav.navigate(pages.list)} />
      </Header>
    );
  }
}

这是默认行为吗?我可以阻止吗?

我也尝试过使用:

    <Stack.Navigator {...getStackConfig(routes)} screenOptions={screenOptions}>
      {routes.map((route) => (
        <Stack.Screen
          key={route.path}
          name={route.page}
          component={route.component}
          options={{
            title: route.message,
            headerStyleInterpolator: HeaderStyleInterpolators.forFade,
            headerStyle: {
              height: Constants.statusBarHeight + REACT_PAPER_APPBAR_HEIGHT
            },
            ...TransitionPresets.SlideFromRightIOS,
          }}
        />
      ))}
    </Stack.Navigator>

这启用了从右侧滑动(ios 样式),我希望它可以解决 AppBar 动画,但我仍然有两个 AppBar 的动画,而我不希望 AppBar 上的动画。

有没有办法在 android 上禁用所有 AppBar 动画?

4

1 回答 1

0

您可以cardStyleInterpolator更改screenOptions

android的默认设置是forRevealFromBottomAndroid您可以将其更改为其他选项:

<Stack.Navigator screenOptions={{
  cardStyleInterpolator: CardStyleInterpolators.forHorizontalIOS // what ever you want 
}}>
...
</Stack.Navigator>

更多选项:https ://reactnavigation.org/docs/stack-navigator/#cardstyleinterpolators

于 2020-06-09T06:32:39.093 回答