0

我一生都无法弄清楚如何使下拉列表正确对齐。我试过用 right: 0 等玩 flex-end 和绝对定位。

我希望在主触发器黄色框的右侧、下方和紧靠右侧列出菜单选项。或者至少与粉红色盒子的右侧对接。我可以很容易地改变高度位置marginTop

在此处输入图像描述

const TermPlanSelector = ({ options, selected, onChangeCallback }) => (
<Menu style={{ borderColor: 'yellow', borderWidth: 1 }}>
    <MenuTrigger style={[formStyles.optionsSelectContainer]}>
        <Text style={[formStyles.optionsSelectorText, { borderColor: 'pink', borderWidth: 1 }]}>
            { getLabel(selected, options) }
        </Text>
        <SelectorDownIcon />
    </MenuTrigger>
    <MenuOptions customStyles={{
                        optionsWrapper: {
                            borderColor: 'yellow', borderWidth: 1
                        },
                        optionsContainer: [
                            formStyles.optionsContainer,
                            { borderColor: 'red', borderWidth: 1 }
                        ],

                    }}
    >
        {
            options.map((option) => (
                <View key={option.value} style={[formStyles.optionItemView, { borderColor: 'green', borderWidth: 1 }]}>
                    <MenuOption onSelect={() => onChangeCallback(option.value)}>
                        <Text style={formStyles.optionItemText}>
                            {option.label}
                        </Text>
                    </MenuOption>
                </View>
            ))
        }
    </MenuOptions>
</Menu>

);

4

2 回答 2

0

尝试将 marginLeft 设为负数,例如 -10;这对我有用:

<MenuOptions
      optionsContainerStyle={{marginLeft: -20,}}
>
于 2020-10-10T17:40:17.050 回答
0

如果“主触发器”的宽度是固定的(或已知的),您可能可以使用一些边距或类似的样式。

但是,如果您正在寻找更清洁的解决方案,请查看扩展指南的自定义渲染器部分,您可以在其中完成控制。

这是如何在 [0, 0] 坐标上呈现菜单的简单示例:

const CustomMenu = (props) => {
  const { style, children, layouts, ...other } = props;
  const position = { top: 0, left: 0 }
  return (
    <View {...other} style={[style, position]}>
      {children}
    </View>
  );
}; 
于 2018-11-18T09:39:57.700 回答