Я пытаюсь создать вид, как показано ниже,
Список флажков является динамическим и может увеличиваться или уменьшаться.На данный момент для скриншота я добавил фиксированную высоту и ширину для стиля checkboxContainer и checkBoxTextContainer.Но мне нужно то же самое, чтобы работать без указания фиксированной высоты и ширины.Ниже приведен мой текущий код.
render() {
return(
<ScrollView
style={{flex:1}}>
<KeyboardAwareScrollView
contentContainerStyle={styles.imageContainer}
resetScrollToCoords={{ x: 0, y: 0 }}
scrollEnabled={true}
keyboardShouldPersistTaps="handled"
>
<View style={styles.dynamicData}>{this.renderData()}</View>
</KeyboardAwareScrollView>
</ScrollView>
);
}
renderData(){
//some other code to display other fields
if (item === "-checkBox-") {
return (
<CheckBoxInput
checkBoxContainerStyle={styles.checkBoxContainer}
checkBoxTextContainerStyle={styles.checkBoxTextContainer}
checkboxStyle={styles.checkBoxStyle}
rightTextMarginStyle={styles.rightTextMargin}
questionTextStyle={styles.questionText}
checkBoxes={this.getDropDownValue(i)}
checkBoxCheckedImage={Images.checkBoxTick}
checkBoxUnCheckedImage={Images.checkBoxEmpty}
updateDropDown={this.onOptionChanged}
index={i}
key={index}
/>
);
}
}
Это мой CheckBoxInputComponent
export default class CheckBoxInput extends Component {
constructor(props) {
super(props);
this.state = {};
}
//Handle checkbox change
handleCheckBoxChange = event => {
console.log("Selected Checkbox = " + event.value);
this.props.updateDropDown(this.props.index, event.value, "checkBox");
};
//Renders checkbox view
renderCheckBoxView() {
let checkBoxComponentList = [];
for (let i = 0; i < this.props.checkBoxes.length; i++) {
checkBoxComponentList.push(
<View
style={this.props.checkBoxTextContainerStyle}
key={this.props.checkBoxes[i].id}
>
<CheckBox
style={this.props.checkboxStyle}
onClick={this.handleCheckBoxChange.bind(
this,
this.props.checkBoxes[i]
)}
isChecked={this.props.checkBoxes[i].isChecked}
checkedImage={<Image source={this.props.checkBoxCheckedImage} />}
unCheckedImage={
<Image source={this.props.checkBoxUnCheckedImage} />
}
/>
<View style={this.props.rightTextMarginStyle} />
<Text style={this.props.questionTextStyle} numberOfLines={1}>
{this.props.checkBoxes[i].value}
</Text>
</View>
);
}
return (
<View style={this.props.checkBoxContainerStyle}>
{checkBoxComponentList}
</View>
);
}
render() {
return this.renderCheckBoxView();
}
}
Это стили
dynamicData: {
flex: 1,
flexDirection: "row",
flexWrap: "wrap",
alignItems: "center"
},
checkBoxTextContainer: {
// width:150
flex: 1,
height: 45,
flexDirection: "row",
justifyContent: "flex-start",
alignItems: "center"
},
rightTextMargin: {
width: 15,
height: 45
},
checkBoxContainer: {
// width: "100%",
// height: 200,
flex: 1,
flexDirection: "row",
flexWrap: "wrap"
},
checkBoxStyle: {
width: 20,
height: 20
},
imageContainer: {
flex: 1,
justifyContent: "flex-start",
alignItems: "flex-start"
},
questionText: {
color: "black",
textAlign: "left",
fontSize: 16,
fontFamily: "SegoeUI-Semibold",
lineHeight: 30
}
Сейчас он не отображает флажокраздел.Теперь вот так
Любая помощь очень ценится.Благодаря.