SafeArea: цвет нижней вкладки в темном режиме изменить нельзя - PullRequest
1 голос
/ 13 апреля 2020

Я застрял в этой проблеме со вчерашнего дня, и я не могу найти решение.

Я пытался настроить цвет safeArea в iPhone X, он хорошо работает сверху и снизу, а также для экранов без вкладки, однако на экранах с навигатором вкладок нижняя безопасная область всегда белая, как показано на скриншоте. Кто-нибудь знает, как решить эту проблему?

Кроме того, я хочу спросить, было бы лучше использовать обычный компонент SafeAreaView и удалить SafeAreaProvider и удалить пакет response-native-safe-area-context, я просто добавила его в качестве пробной версии для решения этой проблемы, но сначала я работал с нормальным компонентом SafeAreaView, работающим в обычном режиме;

В компоненте приложения:

import { SafeAreaProvider } from "react-native-safe-area-context";
          <SafeAreaProvider>
            <NavigationContainer>
              <CatNavigator />
            </NavigationContainer>
          </SafeAreaProvider>

В компоненте CatNavigator:

const CatNavigator = () => {
  return (
    <Drawer.Navigator
      initialRouteName="Home"    >
      <Drawer.Screen
        name="Home"
        component={SettingsNavigator}
        options={{ title: "Inicio" }}
      />
    </Drawer.Navigator>

Во вкладке настроек навигатора:

const SettingsNavigator = () => {
  return (
    <Tab.Navigator
      screenOptions={({ route }) => ({
        tabBarIcon: ({ focused, color, size }) => {
          let iconName;
          const iconType = Platform.OS === "ios" ? "ios" : "md";
          if (route.name === "Home") {
            iconName = iconType + "-home";
          } else if (route.name === "Settings") {
            iconName = iconType + "-settings";
          }
          const tabColor = focused ? Colors.buttonBackColor : Colors.titleColor;
          return <Ionicons name={iconName} size={size} color={color} />;
        },
      })}
      tabBarOptions={{
        activeTintColor: Colors.activeTabColor,
        inactiveTintColor: Colors.inactiveTabColor,
        activeBackgroundColor: Colors.tabBackgroundColor,
        inactiveBackgroundColor: Colors.tabBackgroundColor,
        safeAreaInset: { bottom: "never", top: "never" },
      }}
    >
      <Tab.Screen
        name="Home"
        component={HomeNavigator}
        options={{ title: "Inicio" }}
      />
      <Tab.Screen
        name="Settings"
        component={SettingStackNavigator}
        options={{ title: "Ajustes" }}
      />
    </Tab.Navigator>

В настройках Навигатора :

const SettingStackNavigator = (props) => {
  return (
    <SettingStack.Navigator screenOptions={defaultNavOptions}>
      <SettingStack.Screen
        name="Settings"
        component={SettingScreen}
        options={settingsOptions}
      />
    </SettingStack.Navigator>
  );
};

И, наконец, в SettingScreen:

import { SafeAreaView } from "react-native-safe-area-context";
    return (
      <SafeAreaView
        style={{
             flex: 1,
    backgroundColor: Colors.backgroundColor,
          justifyContent: "center",
          alignItems: "center",
        }}
      >
        {colorScheme === "dark" && <StatusBar barStyle="light-content" />}
       // Other components
      </SafeAreaView>

enter image description here

1 Ответ

0 голосов
/ 09 мая 2020

Если вы хотите изменить этого маленького парня по цвету низов, вам нужно добавить опцию стиля к вашему Tab.Navigator, например,

 tabBarOptions={{
    style: {
      backgroundColor: Colors.tabBackgroundColor,
    },
  }}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...