gpt4 book ai didi

javascript - 有没有办法为 React Native 设置 Picker 组件的样式并使其高度变小?

转载 作者:可可西里 更新时间:2023-11-01 01:19:33 26 4
gpt4 key购买 nike

我想在我的 React Native 应用程序中使用 Picker 组件,但它占用了太多屏幕高度。有没有办法让选择器限制自己一次只显示两个项目,然后可以在其中滚动?

最佳答案

从摆弄样式来看,最重要的部分似乎是设置 itemStyle 属性并在那里定义 height 值。您可能还想为 Picker 组件本身设置样式,并将 height 值设置为相同以获得最佳外观效果,但您不需要 这样做。

关于尝试显示两行:

  • 显示一件商品的高度约为 44。
  • 由于原生 Picker 组件的设计方式,您无法在 iOS 中准确显示两个项目。它将显示当前所选值之上和之下的部分内容。因此,充其量您可以显示这些值的一半/一半。您必须尝试调整高度才能找到适合您的高度。

最小示例:

<Picker style={{width: 200, height: 44}} itemStyle={{height: 44}}>
<Picker.Item label="Java" value="java" />
<Picker.Item label="JavaScript" value="js" />
</Picker>

这是一个 Snack显示不同高度的完整示例(粘贴在下面的代码副本):

import React, { Component } from 'react';
import { Text, View, StyleSheet, Picker } from 'react-native';

export default class App extends Component {
constructor(props) {
super(props)

this.state = {
language: 'haxe',
firstLanguage: 'java',
secondLanguage: 'js',
}
}

render() {
return (
<View style={styles.container}>
<Text style={styles.title}>Unstyled:</Text>
<Picker
style={[styles.picker]} itemStyle={styles.pickerItem}
selectedValue={this.state.language}
onValueChange={(itemValue) => this.setState({language: itemValue})}
>
<Picker.Item label="Java" value="java" />
<Picker.Item label="JavaScript" value="js" />
<Picker.Item label="Python" value="python" />
<Picker.Item label="Haxe" value="haxe" />
</Picker>

<Text style={styles.title}>Shows one row:</Text>
<Picker
style={[styles.onePicker]} itemStyle={styles.onePickerItem}
selectedValue={this.state.firstLanguage}
onValueChange={(itemValue) => this.setState({firstLanguage: itemValue})}
>
<Picker.Item label="Java" value="java" />
<Picker.Item label="JavaScript" value="js" />
<Picker.Item label="Python" value="python" />
<Picker.Item label="Haxe" value="haxe" />
</Picker>

<Text style={styles.title}>Shows above and below values:</Text>
<Picker
style={[styles.twoPickers]} itemStyle={styles.twoPickerItems}
selectedValue={this.state.secondLanguage}
onValueChange={(itemValue) => this.setState({secondLanguage: itemValue})}
>
<Picker.Item label="Java" value="java" />
<Picker.Item label="JavaScript" value="js" />
<Picker.Item label="Python" value="python" />
<Picker.Item label="Haxe" value="haxe" />
</Picker>
</View>
);
}
}

const styles = StyleSheet.create({
container: {
flex: 1,
flexDirection: 'column',
alignItems: 'center',
padding: 20,
backgroundColor: 'white',
},
title: {
fontSize: 18,
fontWeight: 'bold',
marginTop: 20,
marginBottom: 10,
},
picker: {
width: 200,
backgroundColor: '#FFF0E0',
borderColor: 'black',
borderWidth: 1,
},
pickerItem: {
color: 'red'
},
onePicker: {
width: 200,
height: 44,
backgroundColor: '#FFF0E0',
borderColor: 'black',
borderWidth: 1,
},
onePickerItem: {
height: 44,
color: 'red'
},
twoPickers: {
width: 200,
height: 88,
backgroundColor: '#FFF0E0',
borderColor: 'black',
borderWidth: 1,
},
twoPickerItems: {
height: 88,
color: 'red'
},
});

关于javascript - 有没有办法为 React Native 设置 Picker 组件的样式并使其高度变小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39108283/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com