如何在NativeScript页面中添加绝对元素

Ste*_*ott 0 layout plugins nativescript

我希望能够只需将View组件(插件)到通过代码的页面,并让它出现在一些X\Y中的网页...但我有点难倒.

任何通过page.content添加的尝试都会将其添加到layout\render pass中,因此占用空间.

所以这会在"任何"时间被注入"任意"页面,我无法控制将要使用的标记(知道我的意思吗?)没有XML,不幸的是答案不能只是将所有内容都包装在AbsoluteLayout中,因为无法对用户的app\layouts强制要求.

想法,甚至可能吗?

Nat*_*ael 5

基本上,最简单的方法是动态地完全跨平台兼容,就是在JavaScript代码中创建AbsoluteLayout项,并将项和AL动态插入到页面容器中.

代码将是这样的:

var AbsoluteLayout = require('ui/layouts/absolute-layout').AbsoluteLayout;
var myAL = new AbsoluteLayout();
var myItem  new myPluginItem();

// Set you left, right, top, bottom coords.
myItem.top = x;

// Add our item to the AbsoluteItem
myAL.addChild(myItem);

var frame = require('ui/frame');
var page = frame.topmost().currentPage;
var LayoutBase = require('ui/layouts/layout-base').LayoutBase;

page._eachChildView(function(view) {
  if (view instanceof LayoutBase) {
     view.addChild(myItem); 
     return false;
  } 
  return true;
});
Run Code Online (Sandbox Code Playgroud)

但是,如果你不想这么做,那就是非常简单的方法; 唯一的另一种方法是实际上降低一点.您可以原生访问iOS视图控制器(page._ios.view)和android视图(page._nativeView),然后使用addView(https://developer.android.com/reference)等手动将其添加到视图中./android/view/ViewManager.html)或addSubview(https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/).