样式反应原生选择器

n8e*_*n8e 17 javascript android ios reactjs react-native

我正在尝试在React Native选取器中设置项目的文本颜色.到目前为止,我只在iOS上工作,但如果我能找到一个非常棒的跨平台解决方案.

我尝试过以下的事情:

在选择器上的样式颜色

<Picker style={{color:'white'}} ...etc >
Run Code Online (Sandbox Code Playgroud)

在拾取器项目上的样式颜色

<Picker.Item style={{color:'#fff'}} label={'Toronto'} value={'Toronto'} />
Run Code Online (Sandbox Code Playgroud)

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

<Picker.Item color='white' label={'Toronto'} value={'Toronto'} />
Run Code Online (Sandbox Code Playgroud)

在这里完全失去了.感谢您的任何见解!

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

<Picker itemStyle={{color:'white'}} >
      <Picker.Item color='white' label={'Toronto'} value={'Toronto'} />
      <Picker.Item  label={'Calgary'} value={'Calgary'} />
</Picker>
Run Code Online (Sandbox Code Playgroud)

Arn*_*ret 9

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

<Item label="blue" color="blue" value="blue" />
Run Code Online (Sandbox Code Playgroud)


Say*_*chi 8

如前所述,这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>
Run Code Online (Sandbox Code Playgroud)

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

有用的链接:


Jig*_*287 6

要更改文本颜色,背景颜色,字体大小和其他其他内容(例如边距和填充),可以使用如下所示的“ 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>
Run Code Online (Sandbox Code Playgroud)

快乐的编码:)

  • 这似乎对我不起作用 (7认同)
  • itemStyle 仅适用于 IOS (2认同)

Tap*_*bhi 6

只需在 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>
Run Code Online (Sandbox Code Playgroud)


小智 0

您应该尝试backgroundColor而不是颜色: https ://facebook.github.io/react-native/docs/view.html#style

  • 好吧,我应该进一步澄清,我根本没有尝试更改背景颜色 - 我正在尝试更改文本的颜色。 (5认同)