如何设计标准的react原生android选择器?

如何设计标准的react原生android选择器?,android,react-native,Android,React Native,我无法设计它的风格。几乎没有关于这方面的任何文件。我想知道如何设置家庭。如何设置Picker.items上的背景色 设置fontFamily或背景色不起作用。将其包装到视图中并为视图提供样式属性也不起作用 <Picker style={styles.picker} // cannot set fontFamily here selectedValue={this.state.selected2} onValueChange={this.onValueChange.bin

我无法设计它的风格。几乎没有关于这方面的任何文件。我想知道如何设置家庭。如何设置Picker.items上的背景色

设置fontFamily或背景色不起作用。将其包装到视图中并为视图提供样式属性也不起作用

<Picker
   style={styles.picker} // cannot set fontFamily here
   selectedValue={this.state.selected2}
   onValueChange={this.onValueChange.bind(this, 'selected2')}
   mode="dropdown">
   <Item label="hello" value="key0" /> // cannot set backgroundColor here
   <Item label="world" value="key1" />
</Picker>

//无法在此设置背景色

如果您查看
样式
道具,它是选择器的样式,而不是选择器项目


您还可以从文档中看到,选择器具有
itemStyle
prop,但它只是iOS。Android选取器项目的样式设置只能通过本机Android完成。

可以通过本机Android设置样式。见和

将以下代码添加到
/res/values/styles.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
  <item name="android:spinnerItemStyle">@style/SpinnerItem</item>
  <item name="android:spinnerDropDownItemStyle">@style/SpinnerDropDownItem</item>
</style>

<style name="SpinnerItem" parent="Theme.AppCompat.Light.NoActionBar">
  <item name="android:fontFamily">sans-serif-light</item>
  <item name="android:textSize">18dp</item>
</style>

<style name="SpinnerDropDownItem" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:textColor">#ffffff</item>
    <item name="android:textSize">18dp</item>
    <item name="android:fontFamily">sans-serif-light</item>
    <item name="android:gravity">center</item>
    <item name="android:background">@drawable/mydivider</item>
</style>

在设置样式之前:


设置样式后:

问题可能很老,但在这种情况下,您可以使用此选项设置颜色样式:


对于无法在@Abhishek Nalin answer的picker模式中集中文本的用户,请使用android:textAlignment=“center”

感谢您分享解决方案。我在RTL布局上对齐选择器项(spinnerDropDown)中的文本时遇到了类似的问题。我不想按照我的风格硬编码左/右方向。这是我使用的解决方法

在res/values/styles.xml文件中 加


@样式/喷丝板项目
@样式/喷丝头下拉项
重力
开始
重力
开始
10dp

我将此作为一个问题发布在Github上,并得到了一个答案,即可以通过原生android编程实现。如果你知道怎么做,你能回答这个问题吗?
Picker的一个道具是
color
,它是选项文本的颜色。你如何去除矩形顶部和底部的白色背景?我试过了,但没能做到,所以我保持原样。看起来没那么糟:)我成功了,谢谢!有没有办法让你有多种风格可供选择?假设我希望我的应用程序中的一个选择器的字体大小更大,但其他选择器的字体大小都相同。有没有办法在javascript代码中设置某种属性,我可以用它从原生android xml中切换出它所使用的样式?我可以将字体系列更改为“sans serif light”,但我有一个Titillium字体的TTF文件,如何设置它?它可以工作,但是,fontFamily(蒙特塞拉特常规)未应用。您能告诉我如何删除顶部和底部的空白吗?背景如何?
?很好的发现!您可以在
项上修改任何其他样式吗?
?我将回答我自己的问题,没有其他样式。你可以在这里看到:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#29A1C9" />
    <corners android:radius="0.5dp" />
    <stroke
        android:color="#FFFFFF"
        android:width="0.1dp" />
</shape>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- 
        ... existing styles
        --->
        <item name="android:spinnerItemStyle">@style/SpinnerItem</item>
        <item name="android:spinnerDropDownItemStyle">@style/SpinnerDropDownItem</item>
 </style>

 <style name="SpinnerItem" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:textAlignment">gravity</item>
    <item name="android:gravity">start</item>
</style>
<style name="SpinnerDropDownItem" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:textAlignment">gravity</item>
    <item name="android:gravity">start</item>
    <item name="android:padding">10dp</item>
</style>