我想要实现类似于第一张图片中的东西,如果条件为真,视图将被放在同一行中,如果不是,则下一个视图必须放在下一行中。

在我的应用程序中,我现在有这样的结果:

代码如下:
<ScrollView contentContainerStyle={styles.exercisesContainer}>
{item.category_workouts.map((exercice, index) => (
<Exercises
key={index}
img={AssetsManager.Images.exerciseImg}
title={exercice.workout_name}
level={exercice.level}
/>
))}
//
//
exercisesContainer: {
flexDirection: 'row',
flexWrap: 'wrap',
justifyContent: 'center',
},发布于 2020-08-21 17:11:19
找到了我的问题的解决方案。使用一个函数,我根据他的属性level计算每个元素的with。示例:
下面是我的函数,但是它需要一些重构:
const getExercicesWidth = exercices => {
const exercicesLevels = [];
exercices.forEach(exercice => {
exercicesLevels.push(exercice.level);
});
let widthArray = [];
let counter = 1;
for (let i = 0; i < exercicesLevels.length; i++) {
if (i === 0) {
continue;
}
if (exercicesLevels[i] == exercicesLevels[i - 1]) {
counter++;
} else {
widthArray.push(counter);
counter = 1;
}
}
widthArray.push(counter);
const percentageWidthArray = [];
widthArray.forEach(number => {
let c = number;
while (c > 0) {
percentageWidthArray.push(`${Math.round(100 / number)}%`);
c--;
}
});
return percentageWidthArray;
};现在结果是这样的:

https://stackoverflow.com/questions/63509858
复制相似问题