2016-04-28 7 views
1

私は素材に似たソートのドロップダウンリストのためにnativescriptプラグインを開発中です。プラグインは、ページにAbsoluteLayoutを追加して背景として機能させ、そのAbsoluteLayoutにListViewを追加して、ピッカーが上に表示されるようにします。また、XMLで定義された位置に置かれるlabelなどのGridViewも追加されます。ここでは、ビューのXMLで使用されているプラ​​グインの例を示します。NativeScriptでのオーバーレイの配置

<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要素の上に直接、リストビューが表示されています。しかし、私はorigin Xとoriginによって、各親要素を通ってページに到達するまで試行しました。そして、私は「2」の超低数を取り戻しました。スニペットは次のとおりです。

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; 

大変ありがとうございました!

答えて

4

あなたが探している機能は、要素の実際の位置を取得するためにelement.getLocationOnScreen() またはelement.getLocationInWindow()です。

+0

これは非常にうまくいった!ありがとう! –

関連する問題