使用布局表

使用布局表须导入 android.viewandroid.widget 包。

require "import"
import "android.widget.*"
import "android.view.*"

布局表格式

layout={
    控件类名称,
    id=控件名称,
    属性=,
    {
        子控件类名称,
        id=控件名称,
        属性=,
    }
}

例如:

layout={
  LinearLayout,--视图类名称
  id="linear",--视图ID,可以在loadlayout后直接使用
  orientation="vertical",--属性与值
  {
    TextView,--子视图类名称
    text="hello AndroLua+",--属性与值
    layout_width="fill"--布局属性
  },
}

使用loadlayout函数解析布局表生成布局。

activity.setContentView(loadlayout(layout))

也可以简化为:

activity.setContentView(layout)

如果使用单独文件布局(比如有个 layout.aly 布局文件)也可以简写为:

activity.setContentView("layout")

此时不用导入布局文件。

  • 布局表支持大全部安卓控件属性
  • 与安卓 XML 布局文件的不同点:
  • id 表示在 Lua 中变量的名称,而不是安卓的可以 findbyid 的数字 id
  • ImageViewsrc 属性是当前目录图片名称或绝对文件路径图片或网络上的图片
  • layout_widthlayout_height 的值支持 fillwrap 简写
  • onClick 值为 lua 函数或 java onClick 接口或他们的全局变量名称
  • 背景 background 支持背景图片,背景色与 LuaDrawable 自绘制背景,背景图片参数为是当前目录图片名称或绝对文件路径图片或网络上的图片,颜色同 backgroundColor ,自绘制背景参数为绘制函数或绘制函数的全局变量名称
  • 控件背景色使用 backgroundColor 设置,值为 "十六进制颜色值"
  • 尺寸单位支持 pxdpspinmm%w%h
  • 其他参考 loadlayout loadbitmap

警告

%w%h 因为有旋转、分屏、小窗甚至是有不同屏幕比例的手机适配问题,不推荐使用。

  1. 这两个是获取可用显示的宽度和高度再计算,在布局加载完成后View的大小固定那么大(相当于计算完值并将值填进去进去),旋转不会重新计算并设置,就会导致 bug 出现。
  2. 因为使用比例,所以在分屏、小窗上很可能出现变形的情况。