Atividade 7: Estilização com StyleSheet
Transformando textos e caixas sem graça em designs bonitos!
🎯 Objetivos desta aula
- ✓ Entender a diferença entre CSS da web e a estilização do React Native
-
✓
Usar
StyleSheet.create()para organizar a aparência do app - ✓ Aprender as propriedades básicas: cores, padding, margem e bordas arredondadas
🎨 CSS vs React Native Styles
Se você já usou CSS, o React Native vai parecer familiar, mas com duas diferenças cruciais:
Na Web (CSS normal)
Usamos kebab-case (com hífens) e unidades mistas.
.caixa {
background-color: blue;
border-radius: 10px;
font-size: 16px;
}
No React Native
Usamos camelCase (sem hífens) e números sem unidade (pixels viram pontos padrão).
caixa: {
backgroundColor: 'blue',
borderRadius: 10,
fontSize: 16
}
🧐 Resumo: No React Native, todo estilo é apenas um Objeto JavaScript. O
StyleSheet.create() apenas ajuda a deixar a re-renderização mais rápida e valida os
nomes internamente.
💻 Exemplo Prático
Veja como usamos múltiplos estilos em um cartão estilizado:
import React from 'react';
import { View, Text, StyleSheet } from 'react-native';
export default function App() {
return (
<View style={styles.fundoTela}>
<View style={styles.cartao}>
<Text style={styles.tituloCartao}>Aviso Importante</Text>
<Text style={styles.textoCartao}>
Hoje vamos aprender a deixar os apps mobile super bonitos!
</Text>
</View>
</View>
);
}
const styles = StyleSheet.create({
fundoTela: {
flex: 1, // Ocupa toda a tela
justifyContent: 'center', // Centraliza vertical
alignItems: 'center', // Centraliza horizontal
backgroundColor: '#3b82f6', // Azul Tailwind (bg-blue-500)
padding: 20
},
cartao: {
backgroundColor: 'white',
padding: 25, // Espaço interno (do texto até a borda)
borderRadius: 16, // Bordas arredondadas (como Tailwind rounded-xl)
borderWidth: 2, // Espessura da borda
borderColor: '#1d4ed8', // Cor da borda
width: '100%', // Ocupa a largura total (respeitando o padding do pai)
},
tituloCartao: {
fontSize: 22,
fontWeight: 'bold',
color: '#1e293b', // bg-slate-800
marginBottom: 10 // Espaço abaixo do título (empurra o texto de baixo)
},
textoCartao: {
fontSize: 16,
color: '#475569', // bg-slate-600
lineHeight: 24 // Altura da linha (espaço entre frases)
}
});
🎮 Desafios Práticos
Copie o código base e resolva os desafios no Expo Snack:
Modificar 🛠️
Vamos alterar as cores (tema Dark Mode)!
- Modifique o
backgroundColordocartaopara'#1e293b'(Super escuro). - Modifique a cor do
tituloCartaopara'#ffffff'(Branco puro). - Modifique a cor do
textoCartaopara'#cbd5e1'(Cinza claro pastel).
Melhorar 🚀
Vamos adicionar uma Tag de status visual indicando que o aviso é "Urgente".
- Acima do Título do cartão (ainda dentro do
<View style={styles.cartao}>), adicione um novo<Text>URGENTE</Text>. - Crie um novo objeto de estilo (ex:
tagUrgente) lá embaixo noStyleSheet.create(). - Estilize essa tag: fundo vermelho (
'#ef4444'), texto branco, padding de 5, com letras em negrito e tamanho da fonte 12. Use ele no texto urgente!
Criar ✨
Aplique margens externas.
- A borda que fica em volta da tag URGENTE deve se afastar do Título de baixo.
- Adicione a propriedade
marginBottom: 15ao objeto de estilo da sua `tagUrgente`. Percebe o que aconteceu? O Margin empurra tudo que está embaixo dele! Pad, no entanto, cria enchimento para dentro.