React Native’da metni dikey olarak hizalamak, web’deki `vertical-align`’ın doğrudan bir eşdeğerine sahip olmadığı için zor olabilir. Bununla birlikte, Flexbox’tan yararlanmak zarif çözümler sunar. Bu makale, bir kapsayıcı içinde metni ortalamak için justifyContent
ve alignItems
kullanarak iki etkili yaklaşımı ele almaktadır.
İçindekiler
justifyContent
ve alignItems
ile Metni Ortalama
Bu yöntem, metni doğrudan üst kapsayıcısı içinde ortalamak istediğiniz basit senaryolar için idealdir. Hem dikey hem de yatay hizalamayı aynı anda işlemek için Flexbox’ın gücünden yararlanır.
import React from 'react';
import { View, Text, StyleSheet } from 'react-native';
const CenteredText = () => {
return (
<View style={styles.container}>
<Text style={styles.text}>Bu metin dikey ve yatay olarak ortalanmıştır!</Text>
</View>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
height: 200,
backgroundColor: 'lightblue',
},
text: {
fontSize: 20,
},
});
export default CenteredText;
Açıklama:
flex: 1
:View
‘ın üst öğesinin kullanılabilir alanını doldurmasını sağlar.justifyContent: 'center'
: İçeriğiView
içinde dikey olarak ortalar.alignItems: 'center'
: İçeriği yatay olarak ortalar. Bu, metnin genişliği değişse bile ortalanmış kalmasını sağlar.height: 200
: Sabit bir yükseklik belirlemek çok önemlidir. Bu olmadan, metin varsayılan olarak üste geleceğindenjustifyContent
etkili olmaz.
Gelişmiş Ortalama: İç İçe Bileşenlerin İşlenmesi
İç içe geçmiş bileşenlere sahip daha karmaşık düzenler için biraz farklı bir yaklaşım gereklidir. Bu yöntem, hassas dikey hizalama sağlamak için flexDirection
, alignItems
ve flex
kombinasyonunu kullanır.
import React from 'react';
import { View, Text, StyleSheet } from 'react-native';
const CenteredTextNested = () => {
return (
<View style={styles.container}>
<View style={styles.innerContainer}>
<Text style={styles.text}>Bu metin de dikey ve yatay olarak ortalanmıştır!</Text>
</View>
</View>
);
};
const styles = StyleSheet.create({
container: {
height: 200,
backgroundColor: 'lightcoral',
},
innerContainer: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
},
text: {
fontSize: 20,
},
});
export default CenteredTextNested;
Açıklama:
- Dış
View
(container
)flexDirection: 'row'
gerektirmez. İçView
hizalamayı işler. - İç
View
‘da (innerContainer
)flex: 1
, üst öğesinin yüksekliğini doldurmasını sağlar. innerContainer
üzerindekijustifyContent: 'center'
vealignItems: 'center'
, metni hem dikey hem de yatay olarak bu kapsayıcı içinde ortalar.
Görsel hata ayıklama için gerekirse yükseklikleri ve arka plan renklerini ayarlamayı unutmayın. Temiz ve sürdürülebilir kod için bileşen yapınıza en uygun yöntemi seçin.