我正在使用nativescript插件获取各种各样的素材下拉列表。该插件将一个AbsoluteLayout添加到Page作为背景,然后将ListView添加到该AbsoluteLayout,以便选择器显示在顶部。它还添加了带有标签的GridView,并将其置于由其XML定义的位置。以下是视图的XML中使用的插件示例:
<GridLayout rows="auto" columns="*, auto">
<StackLayout>
<label text="Color" />
<label style="height: 3; background-color: gray;" />
</StackLayout>
<MDL:MaterialDropdownList col="1" id="ddlColors"
items="{{ colors }}" selectedIndex="{{ selectedColorIndex }}" >
</MDL:MaterialDropdownList>
</GridLayout>
我想要做的是点击时在MaterialDropdownList
元素上直接显示ListView。但是,我尝试过originX和originY,一直到每个父元素,直到我点击Page,然后我回到了超低数量的&#34; 2&#34;。这是一个片段:
let src: viewModule.View = <viewModule.View>arg.object,
x: number, y: number;
x = src.originX;
y = src.originY;
let parent = src.parent;
while (parent !== this.page) {
x += parent.originX;
y += parent.originY;
parent = parent.parent;
}
console.log(`x and y are ${x} and ${y}`); //2, 2
this._listPicker.originX = x;
this._listPicker.originY = y;
非常感谢任何想法!
答案 0 :(得分:4)
我相信你要找的功能是element.getLocationOnScreen() 或element.getLocationInWindow()获取元素的实际位置。