样式 React Native Picker

IT技术 javascript android ios reactjs react-native
2021-05-19 20:16:11

我正在尝试在 React Native 选择器中设置项目的文本颜色样式。到目前为止,我只在 iOS 上工作过,但如果我能找到一个跨平台的解决方案,那就太棒了。

我尝试了以下几件事:

Picker 上的样式颜色

<Picker style={{color:'white'}} ...etc >

选择器项目上的样式颜色

<Picker.Item style={{color:'#fff'}} label={'Toronto'} value={'Toronto'} />

我也看到了一些添加颜色属性的例子,所以我尝试了这个

<Picker.Item color='white' label={'Toronto'} value={'Toronto'} />

在这里完全不知所措。感谢您的任何见解!

编辑:这是一个解决方案 - 在 Picker 元素中使用 itemStyle props。我相信这只是iOS。

<Picker itemStyle={{color:'white'}} >
      <Picker.Item color='white' label={'Toronto'} value={'Toronto'} />
      <Picker.Item  label={'Calgary'} value={'Calgary'} />
</Picker>
4个回答

要更改颜色,您需要使用:

<Item label="blue" color="blue" value="blue" />

要更改文本颜色、背景颜色、字体大小和其他诸如边距和填充之类的其他内容,您可以使用“itemStyle”,如下所示:

<Picker
    selectedValue={this.state.selectedItem}
    style={{ height: 100, width: 200 }}
    onValueChange={this.onChangeItem}
    itemStyle={{ backgroundColor: "grey", color: "blue", fontFamily:"Ebrima", fontSize:17 }}
>
    {cityItems}
</Picker>

如果您需要选择器周围的边框,您可以将选择器包装在一个视图中并为其提供边框。像下面这样:

<View style={{ borderWidth: 1, borderColor: 'red', borderRadius: 4 }}>
    <Picker
        selectedValue={this.state.selectedItem}
        style={{ height: 100, width: 200 }}
        onValueChange={this.onChangeItem}
        itemStyle={{ backgroundColor: "grey", color: "blue", fontFamily:"Ebrima", fontSize:17 }}
    >
        {cityItems}
    </Picker>
</View>

快乐编码:)

如前所述,这itemStyleproperty仅受iOS 平台支持的高级功能,您可以在此处的 React Native 文档中看到因此,对于 Android 上的 Picker 项目的样式,例如更改fontFamily只能使用原生 Android 样式完成目前然后它将适用于两个平台。

考虑到这一点,您可以<style>style.xml文件中添加一个包含资源的新标签,通常在路径中本地化:android/app/src/main/res/values/styles.xml. 并将其设置AppTheme为使用添加的样式进行计数,例如:

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
     <item name="android:spinnerItemStyle">@style/SpinnerItem</item>
     <item name="android:spinnerDropDownItemStyle">@style/SpinnerDropDownItem</item>
    </style>

    <!-- Item selected font. -->
    <style name="SpinnerItem" parent="Theme.AppCompat.Light.NoActionBar">
     <item name="android:fontFamily">casual</item>
    </style>

    <!-- Dropdown options font. -->
    <style name="SpinnerDropDownItem" parent="Theme.AppCompat.Light.NoActionBar">
      <item name="android:fontFamily">casual</item>
      <item name="android:padding">8dp</item>
    </style>
<resources>

重要提示:有时您在 Android 中寻找的样式属性名称与 React Native 中使用的不同。例如,您可能需要使用定位android:gravity而不是flex因此,您可能需要在 Android 上搜索专用的 XML 标记属性以对其进行样式设置。考虑到这一点,在 React Native 中color为文本字体android:textColor进行翻译适用于 Android。

有用的链接:

只需在 TouchableOpacity 中添加选择器并将样式应用到 TouchableOpacity。
例子:-

<TouchableOpacity style={[style.textFieldSmall, style.textInput]}>
 <Picker
   style={{color: '#fff', placeholderTextColor: '#fff'}}
   selectedValue={this.state.choosenLabel}
   onValueChange={
   (itemValue, itemIndex) => this.setState({
    choosenLabel: itemValue, 
    choosenindex:itemIndex})
    }
 >
  <Picker.Item label="Purchase" color="white" value="Purchase" />
  <Picker.Item label="YES" value="YES" />
  <Picker.Item label="NO" value="NO" />
 </Picker>
 </TouchableOpacity>