我希望能够通过代码将View组件(插件)放入页面并让它显示在页面上的某个X \ Y上...但我有点难过。
任何通过page.content添加的尝试都会将其添加到layout \ render pass中,以便占用空间。
所以这会被注入"任何"页面在"任何"时间,我无法控制标记,这将用于(知道我的意思吗?)没有XML,不幸的是,答案不能只是将所有内容都包装在AbsoluteLayout中,因为一个人不能强制要求用户应用\布局。
思考,甚至可能吗?
答案 0 :(得分: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;
});
然而,如果你不想这么做,那就是非常简单的方法;唯一的另一种方法是实际上降低一点。您可以原生访问iOS视图控制器(page._ios.view)和android视图(page._nativeView),然后使用addView(https://developer.android.com/reference/android/view/ViewManager.html)或addSubview({{}等手动将其添加到视图中。 3}})。
答案 1 :(得分:4)
我想补充一下,您可以通过导入AbsoluteLayout来设置TypeScript中的Top和Left属性
import {AbsoluteLayout} from 'ui/layouts/absolute-layout';
然后使用公开的函数setLeft或setTop
AbsoluteLayout.setLeft(YourItem, LeftValue);
要么
AbsoluteLayout.setTop(YourItem, TopValue);