画像に示すように、反応するネイティブアプリケーションのネイティブベースからタブをカスタマイズする(背景色を変更する)必要があります
私はすでにこれを試しましたstyle={{ backgroundColor: '#C0C0C0' }}
しかし、私はデフォルトのテーマを取得し続けます。
以下のようなネイティブベースタブに独自のスタイルを適用できます。
<Tabs tabBarUnderlineStyle={{borderBottomWidth:2}}>
<Tab heading="Popular" tabStyle={{backgroundColor: 'red'}} textStyle={{color: '#fff'}} activeTabStyle={{backgroundColor: 'red'}} activeTextStyle={{color: '#fff', fontWeight: 'normal'}}>
// tab content
</Tab>
<Tab heading="Popular" tabStyle={{backgroundColor: 'red'}} textStyle={{color: '#fff'}} activeTabStyle={{backgroundColor: 'red'}} activeTextStyle={{color: '#fff', fontWeight: 'normal'}}>
// tab content
</Tab>
</Tabs>
TabHeading
見出しの代わりにstring
を使用してコンポーネントを使用している場合は、tabStyle
でtextStyle
、Tab
小道具を使用、またはTabHeading
は機能しません(少なくとも現時点では)。 TabHeading
、Icon
、およびText
を手動でスタイル設定する必要があります。
以下に例を示します-
<Tabs tabBarUnderlineStyle={{borderBottomWidth:2}}>
<Tab heading={<TabHeading>
<Icon name="icon_name" />
<Text>Popular</Text>
</TabHeading>}
tabStyle={{backgroundColor: 'red'}} textStyle={{color: '#fff'}}
activeTabStyle={{backgroundColor: 'red'}} activeTextStyle={{color: '#fff', fontWeight: 'normal'}}>
// tab content
</Tab>
<Tab
heading={<TabHeading>
<Icon name="icon_name" />
<Text>Popular</Text>
</TabHeading>}
tabStyle={{backgroundColor: 'red'}} textStyle={{color: '#fff'}}
activeTabStyle={{backgroundColor: 'red'}} activeTextStyle={{color: '#fff', fontWeight: 'normal'}}>
// tab content
</Tab>
</Tabs>
tabStyle
やその他の小道具をTabHeading
コンポーネントに移動しても機能しません。
<Tabs tabBarUnderlineStyle={{borderBottomWidth:2}}>
<Tab heading={<TabHeading style={{backgroundColor: 'red'}}>
<Icon name="icon_name" style={{color: '#ffffff'}} />
<Text style={{color: '#ffffff'}}>Popular</Text>
</TabHeading>}>
// tab content
</Tab>
<Tab
heading={<TabHeading style={{backgroundColor: 'red'}}>
<Icon name="icon_name" style={{color: '#ffffff'}} />
<Text style={{color: '#ffffff'}}>Popular</Text>
</TabHeading>}>
// tab content
</Tab>
</Tabs>
<Tabs tabBarUnderlineStyle={{borderBottomWidth:2}} initialPage={this.state.currentTab} onChangeTab={({ i }) => this.setState({ currentTab: i })}>
<Tab heading={<TabHeading style={this.state.currentTab == 0 ? styles.activeTabStyle : styles.inactiveTabStyle}>
<Icon name="icon_name" style={this.state.currentTab == 0 ? styles.activeTextStyle : styles.inactiveTextStyle} />
<Text style={this.state.currentTab == 0 ? styles.activeTextStyle : styles.inactiveTextStyle}>Popular</Text>
</TabHeading>}>
// tab content
</Tab>
<Tab
heading={<TabHeading style={this.state.currentTab == 1 ? styles.activeTabStyle : styles.inactiveTabStyle}>
<Icon name="icon_name" style={this.state.currentTab == 1 ? styles.activeTextStyle : styles.inactiveTextStyle} />
<Text style={this.state.currentTab == 1 ? styles.activeTextStyle : styles.inactiveTextStyle}>Popular</Text>
</TabHeading>}>
// tab content
</Tab>
</Tabs>
私は解決策を試してみました。 それはひどい!(私の意見では)。
だから私は元の答えに行き、タブの見出しにアイコンがないことを決めました(状態変更の遅延を扱うよりも支払う方が良い価格でした)
また、tabStyle
とprops
のその他のTabHeading
があることに気づいたので、彼らはそれに取り組んでいるのかもしれませんが、これは現時点でのバグですか?
とにかく、私はこれを指摘したかっただけです。
試行:
<ScrollableTab style={{borderBottomWidth: 0, backgroundColor: 'some_color'}}
/>
または
<TabHeading style={{
backgroundColor: 'some_color',
borderBottomWidth: 0,
}}>
または以下のprop/attributeをコンポーネントに追加:
tabBarUnderlineStyle={{backgroundColor: '#eff2f8'}}
TabsコンポーネントのrenderTabBarメソッドでScrollableTabを使用している場合、上記の例は部分的なソリューションであり、TabsおよびTabコンポーネントのネストされたコンポーネントに目的のスタイルを適用する必要があることに注意してください。そのため、ScrollableTabコンポーネントを使用している場合は、ScrollableTabコンポーネントにスタイルを直接適用することをお勧めします。以下の例を確認してください。
<Tabs renderTabBar={() => <ScrollableTab style={{ backgroundColor: "your colour" }} />}>
Your Tab Content
</Tabs>
詳細については、「 このgithubの問題 」を参照してください