Beginner
Beginner

Reputation: 41

How to style the React-native picker items to wrap the lengthy text?

I have designed a picker using react native, and I'm trying to style it using styles.XML BUT its not working. I want my drop down items to wrap in second line when the length of the text exceeds the width.

class PickerExample extends Component {
   state = {link: ''}
   updateUser = (link) => {
      this.setState({ link: link })
   }
   render() {
      return (
         <View>
            <Picker selectedValue = {this.state.user} onValueChange = {this.updateUser}>
               <Picker.Item label = "25 best small-business apps in 2018 - nerdwallet" value = "one" />
               <Picker.Item label = "Top business apps, best apps for small business" value = "two" />
               <Picker.Item label = "Collaboration & productivity apps for business" value = "three" />
            </Picker>
            <Text style = {styles.text}>{this.state.link}</Text>
         </View>
      )
   }
}
export default PickerExample

Styles.xml

<resources>
    <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">segoe-ui</item>
    </style>

    <style name="SpinnerDropDownItem" parent="Theme.AppCompat.Light.NoActionBar">>
        <item name="android:layout_width">fill_parent</item>
        <item name="android:layout_height">wrap_content</item>   
        <item name="android:singleLine">false</item>
    </style>

</resources>

Upvotes: 4

Views: 3036

Answers (2)

sreya
sreya

Reputation: 1

                <Picker
                
                  selectedValue={gender}
                  style={GlobalStyles.picker}
                  numberOfLines={3} // use this number of lines attribute .it works file in android
                >
              
                    <Picker.Item
                      label={item.label}
                      value={item.value}
                      key={item.label}
                      fontFamily="Raleway-Medium"
                      style={GlobalStyles.pickerText}
                    />
           
                </Picker>

Upvotes: 0

Sushant Patil
Sushant Patil

Reputation: 61

Add below line into your custom style

<item name="android:inputType">textMultiLine</item>

Hope this will work!

Upvotes: 2

Related Questions