Skip to content
xu_whale edited this page Sep 7, 2020 · 17 revisions

点击查看View的Demo

继承关系

View

简介

基本的容器视图

基本容器视图,用来存放其他子视图

⚠️ 由于Android布局系统原因,建议不要使用绝对值进行相关布局,而使用相对布局(Match Parent, Wrap Content, margin, Gravity)。大多数情况下,需要使用绝对值的布局可以被相对布局代替,比如需要在距离屏幕底部100的位置有个按钮,可使用:Gravity.Bottom加marginBottom来实现。 如果一定需要获取屏幕高度,并根据此高度布局,使用window:height()获取高度,并监听window:sizeChanged(function),在屏幕尺寸改变时,改变相应视图

构造方法

View() 构造方法

API

width(number size)

设置视图宽度

获取视图宽度

height(number size)

设置视图高度

获取视图高度

marginTop(number value)

设置视图的上外边距

获取视图的上外边距

marginLeft(number value)

设置视图的左外边距

获取视图的左外边距

marginBottom(number value)

设置视图的下外边距

获取视图的下外边距

marginRight(number value)

设置视图的右外边距

获取视图的右外边距

priority(number priority)

约束优先级,范围0-1000

⚠️ 只能在LinearLayout中有用

获取约束优先级,范围0-1000

⚠️ 只能在LinearLayout中有用

weight(number weight)

约束权重(百分比),范围0-1000

⚠️ 只能在LinearLayout中有用

获取约束权重(百分比),范围0-1000

⚠️ 只能在LinearLayout中有用

padding(number top, number right, number bottom, number left)

设置视图的内边距

setMaxWidth(number a)

设置最大宽度约束

⚠️ 配合自适应使用,对于嵌套视图父视图设置该属性,子视图超出父视图范围的情况,可以导致效果和预期不一致,此时需要对父视图使用clipToBounds切割子视图,iOS默认不切割子视图

setMinWidth(number value)

设置最小宽度约束

⚠️ 配合自适应使用,对于嵌套视图父视图设置该属性,子视图超出父视图范围的情况,可以导致效果和预期不一致,此时需要对父视图使用clipToBounds切割子视图,iOS默认不切割子视图

setMaxHeight(number value)

设置最大高度约束

⚠️ 配合自适应使用,对于嵌套视图父视图设置该属性,子视图超出父视图范围的情况,可以导致效果和预期不一致,此时需要对父视图使用clipToBounds切割子视图,iOS默认不切割子视图

setMinHeight(number value)

设置最小高度约束

⚠️ 配合自适应使用,对于嵌套视图父视图设置该属性,子视图超出父视图范围的情况,可以导致效果和预期不一致,此时需要对父视图使用clipToBounds切割子视图,iOS默认不切割子视图

返回该视图的父视图对象

⚠️ window返回nil

addView(View subView)

添加子视图

insertView(View subView, number idx)

将视图插入到当前视图的某一个层级

从父视图中移除自身

移除当前视图所有的子视图

convertPointTo(View otherView, Point point)

坐标转换

⚠️ 被转换的坐标来自于自身

convertPointFrom(View otherView, Point point)

坐标转换

⚠️ 被转换的坐标来自于参考视图

布局相关

⚠️ SDK>=1.0.2 只能在特殊layout中有用,eg: LinearLayout,默认吸附左上角

convertRelativePointTo(View otherView, Point point)

坐标转换

alpha(number value)

设置视图透明度,范围 0 ~ 1

⚠️ 在iOS,当透明度小于0.1之后,将无法响应事件

获取视图透明度

hidden(boolean isHidden)

设置视图是否隐藏,默认为false,不隐藏。该方法隐藏后依然占位,如果不想占位,请使用gone

获取视图是否隐藏

gone(boolean isGone)

设置视图是否隐藏,开启后,视图在LinearLayout中将不占位置

gone()

获取视图是否隐藏

borderWidth(number value)

设置视图的边框宽度

获取视图的边框宽度值

设置视图的边框颜色

获取视图的边框颜色

bgColor(Color color)

设置视图的背景颜色

获取视图的背景颜色

cornerRadius(number radius)

设置视图的圆角半径

⚠️ iOS默认不切割,使用CornerManager开启自动切割,调用clipToBounds手动控制是否切割,Android默认切割超出部分

获取视图的圆角半径,默认返回左上角

设置圆角半径,根据不同的位置

⚠️ 不能与阴影连用

根据不同的方向获取视图圆角半径

设置子视图是否在view的边界内绘制

⚠️ Android:clipToBounds只能对parent使用,parent会遍历子View,让所有子View都统一clipToBounds。注:parent自己不生效,需要调用parent的parent才行。 IOS:clipToBounds只能对View自己生效

notClip(boolean noClip)

设置圆角后,是否切割,默认切割false;优化性能使用

⚠️ iOS空实现,仅Android可用,Android sdk1.5.0 默认切割子View。可以改用addCornerMask()绘制圆角遮罩

addCornerMask(number cornerRadius, Color maskColor, RectCorner corners)

以覆盖一张中间透明周边含有指定颜色圆角的图片的方式实现圆角效果

⚠️ 这是一种提高圆角切割性能的方案,对于子视图超出父视图显示的情况,不建议使用该方式。

setGradientColor(Color startColor, Color endColor, boolean isVertical)

设置线性渐变色

设置线性渐变色,支持正向反向

enabled(boolean usable)

设置当前视图是否可以响应用户的点击,触摸等交互事件

⚠️ 该属性关闭后,不仅会导致自身无法响应事件,而且子视图也无法响应事件。所以当业务中遇到某些控件无法响应,可以考虑是否是自身或父视图禁用了用户交互。

获取当前视图是否可以响应用户的点击,触摸等交互事件

onClick(function callback)

设置点击事件回调

⚠️ iOS采用的是手势监听,所以要注意事件冲突,在冲突时可使用touchEnd方法

onLongPress(function callback)

设置长按回调

onTouch(function callback)

设置有坐标的点击回调

⚠️ 已废弃,在需要回调点击坐标的情况下请结合实际场景使用touchBegin或者touchEnd方法

获取是否有焦点

判断是否能获取焦点

获取焦点

取消焦点

touchBegin(function callback)

触摸开始的回调

touchMove(function callback)

触摸移动中的回调

⚠️ 该回调会在移动中多次调用

touchEnd(function callback)

触摸结束后的回调

⚠️ 该坐标是手指抬起时的坐标

touchCancel(function callback)

触摸取消的回调

⚠️ 该回调在用户移出当前视图时会调用

touchBeginExtension(function callback)

触摸开始时的回调

touchMoveExtension(function callback)

触摸移动时的回调

touchEndExtension(function callback)

触摸结束时的回调

touchCancelExtension(function callback)

触摸取消时的回调

setPositionAdjustForKeyboard(boolean isOpen)

设置是否开启键盘出现后视图自动位移

⚠️ 已废弃

setPositionAdjustForKeyboardAndOffset(boolean isOpen, number offset)

是否开启键盘出现后视图自动位移,并可设置偏移量

⚠️ 已废弃

anchorPoint(number x, number y)

锚点,动画作用的位置,从0~1的比例,在视图中对应位置

transform(number rotate, boolean add)

旋转视图,可以控制绝对旋转还是叠加旋转

⚠️ 已废弃,请使用rotation方法

rotation(number rotate, boolean notAdding)

旋转视图

scale(number x, number y, boolean add)

缩放视图

⚠️ 参数c是iOS平台隐藏参数,默认不要传

translation(number x, number y, boolean add)

位移视图

⚠️ 参数c是iOS隐藏属性,默认不要传

重置Transform

移除视图上的帧动画

snapshot(string filename)

视图截屏

⚠️ 请在界面绘制完毕后,再进行截图操作

添加高斯模糊

⚠️ iOS有效,Android空实现

移除高斯模糊

⚠️ iOS有效,Android空实现

设置点击时的效果

⚠️ Android上为波纹效果,iOS上是一种灰色高亮

设置是否开启点击收起键盘功能

将当前视图的子视图移动到所有子视图的最上层

⚠️ LinearLayout不可使用该方法。️Android不能实现将某个View放入图层下方或上方,View可以做到是通过将子视图加入顺序调换实现,LinearLayout若调换顺序,将导致布局出错

将子视图放到最下层

⚠️ LinearLayout不可使用该方法。️Android不能实现将某个View放入图层下方或上方,View可以做到是通过将子视图加入顺序调换实现,LinearLayout若调换顺序,将导致布局出错

bgImage(string imageName)

给视图设置背景图片

⚠️ 背景图片只支持本地资源

addShadow(Color shadowColor, Size shadowOffset, number shadowRadius, number opacity, boolean isOval)

给视图添加矩形或圆形阴影

setShadow(Size shadowOffset, number shadowRadius, number opacity)

设置视图阴影

⚠️ 1.cornerRadius+Shadow 使用时: 1)不能对同一个View用ClipToBounds(),否则无效; 2)Android 给子View使用Shadow,子View不能充满容器,否则阴影被Parent切割 2.setCornerRadiusWithDirection 禁止与Shadow连用; 3.阴影的View有Z轴高度,会遮挡没有Z轴高度的同层View

onDetachedView(function callback)

子视图从父视图移除时的回调

开始画布动画(CanvasAnimation),不会影响布局

⚠️ 不可使用FrameAnimation和Animation

停止View里的画布动画

⚠️ 非画布动画不会停止

Clone this wiki locally