강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

민지영님의 프로필 이미지
민지영

작성한 질문수

아바타 커뮤니티앱 만들기 (React Native Expo)

[2-1] 리액트네이티브 기초 - FlexBox

android header를 ios처럼 바꾸기

작성

·

12

·

수정됨

0

강의에서는 패딩으로 간격만 주셨지만 전 통일성을 주고 싶어 ios처럼 android header의 title도 중앙에 오게 하고 싶어 제가 한 방법을 공유하기 위해 글 작성합니다..!

일단 android일때만 headerTitleAlign 기능을 주기 위해 constants폴더에 플랫폼에 대한 플래그 변수를 만들었습니다.

// /constants/platform.ts

import { Platform } from "react-native";

export const isAndroid = Platform.OS === "android";
export const isIOS = Platform.OS === "ios";

 

// /app/auth/_layout.ts
import { colors } from "@/constants";
import { isAndroid } from "@/constants/platform";
import Foundation from "@expo/vector-icons/Foundation";
import { Link, Stack } from "expo-router";

export default function AuthLayout() {
  return (
    <Stack
      screenOptions={{
        headerTintColor: colors.BLACK,
        contentStyle: {
          backgroundColor: colors.WHITE,
        },
      }}
    >
      <Stack.Screen
        name="index"
        options={{
          title: "로그인",
          headerShown: true,
          headerStyle: {},
          ...(isAndroid && { headerTitleAlign: "center" }),
          headerLeft: () => (
            <Link href={"/"} replace style={{ paddingRight: 5 }}>
              <Foundation name="home" size={28} color={"black"} />
            </Link>
          ),
        }}
      />
    </Stack>
  );
}

 그 다음 안드로이드일 때만 헤더 텍스트를 중아에 오도록 지정했습니다!

답변 1

0

Kyo님의 프로필 이미지
Kyo
지식공유자

저도 headerTitleAlign center로 주는것이 좋은방법이라고 생각합니다!

민지영님의 프로필 이미지
민지영

작성한 질문수

질문하기