Skip to content

在xml中使用表达式

zhenglibao edited this page Jun 18, 2021 · 4 revisions

使用表达式

  • 在要使用表达式的属性名称前添加$,比如 layout="$width: 3*(100+2)"
  • 布局属性和视图属性均支持表达式
  • 表达式中支持的符号包括 +, -, *, /, (, ), 不支持其他运算符
  • 在表达式中支持使用宏定义,包括系统预定义的宏和自定义的宏,如 layout="$width: 3*(ScreenWidth+2)"
  • 如果表达式有错误,将会返回nan,同时控制台会输出相应错误信息

使用宏定义

  • 宏是一个具有名称,并且能够返回double数值类型的block,可以通过名称来获取该block的返回值
  • 系统内置支持4个宏,包括 ScreenWidth, ScreenHeight, NavHeight, ScreenScale
  • 使用FlexRegisterMacro注册自定义宏,宏名字必须使用大写或者小写英文字母,建议不要包含数字或者其他特殊字符
  • 如果在表达式中引用了未注册的宏定义,则将按照0处理,同时控制台会有相应的提示

例子

<UIView layout="$width:ScreenWidth*0.6,height:50,alignItems:center,justifyContent:center" attr="bgColor:#e5e5e5,borderRadius:6">
     <UILabel attr="@:system/buttonText,text:表达式计算,屏幕宽度的60%"/>
</UIView>
Clone this wiki locally