expoでおしゃれなタブ切り替えを実装する。【コピペで動く】

expoのアプリ内でタブを使用した切り替えを実装したい時があるかと思います。

今回は、簡単にできるおしゃれなタブのコードを紹介します。

画面内で表示する要素を切り替えるのにとても便利なので、使えるようになるとデザインの幅が広がりますよ!

タブイメージ

選択すると、文字の色が変化して、下にアンダーバーが入るようになります。

実際のコード

では、早速コードから紹介します。

import部分は省略しているので、適宜必要な要素をインポートしてください。

       const [activeTab, setActiveTab] = useState(1); // タブの状態を管理。最初に表示されるタブは1


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

       <View style={styles.tabContainer}>
          <TouchableOpacity 
            style={[styles.tabButton, activeTab === 1 ? styles.tabButtonActive : null]}
            onPress={() => setActiveTab(1)}
          >
            <Text style={[styles.tabButtonText, activeTab === 1 ? styles.tabButtonTextActive : null]}>
              Tab1
            </Text>
          </TouchableOpacity>

          <TouchableOpacity 
            style={[styles.tabButton, activeTab === 2 ? styles.tabButtonActive : null]}
            onPress={() => setActiveTab(2)}
          >
            <Text style={[styles.tabButtonText, activeTab === 2 ? styles.tabButtonTextActive : null]}>
              Tab2
            </Text>
          </TouchableOpacity>
        </View>

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


{activeTab === 1 && (
    <View>
    //タブ1の要素を記載
    </View>
)}

{activeTab === 2 && (
    <View>
    //タブ2の要素を記載
    </View>
)}

スタイルシート

tabContainer: {
    flexDirection: 'row',
    justifyContent: 'center',
    padding: 10,
    // backgroundColor: '#f8f8f8', // 薄いグレーの背景色
  },
  tabButton: {
    borderBottomWidth: 2,
    borderColor: 'transparent', // 透明な境界線
    paddingBottom: 8,
    paddingHorizontal: 20,
    marginHorizontal: 10,
  },
  tabButtonText: {
    color: '#666', // 暗めのグレーテキスト
    fontSize: 16,
  },
  tabButtonActive: {
    //borderBottomColor: '#007BFF', // アクティブなタブの境界線は青色
    borderBottomWidth:1,
    paddingBottom: 6, // アクティブなタブは少し境界線に近づける
    marginBottom:2,

    borderColor:"#007BFF",
  },
  tabButtonTextActive: {
    color: '#007BFF', // アクティブなタブのテキストも青色
    fontWeight: 'bold',
  },

これらをコピペして、使用してください。

コード解説

先ほどのコードを解説していきましょう。

言語知識自体は、ある程度持っていることを前提にしていますので、ところどころわからないところなどあれば、調べてみてください。

useStateでタブの状態を管理

最初の行で、useStateを用いてタブの状態を管理しています。

「今どのタブを開いているのか」を管理しています。

activeTab内の数が、「今どのタブを開いているのか」を判断しているものにあたります。

今回は、1と2で管理しています。

また最初に開くタブは、1に設定してあります。

タブの表示とスタイル

タブの表示部分についてです。

各種要素がありますが、特段難しいものは用いていません。

それぞれのタブボタンをタップした時に、setActiveTab でタブの状態を更新しています。

あべべ

これらを使用すれば、タブの切り替えを画面内で行うことができるようになります。

まとめ

今回は、おしゃれなタブ要素のコードを紹介しました。

そのまま使えるので、ぜひ使ってみて、リッチな画面にしてみてください。

では、良いexpo開発を。またどこかでお会いしましょう。

(Visited 89 times, 1 visits today)