前回の記事ではタグごとの属性値
自動配置用タグ
<simplelayout>
<simplelayout>を使うと、
<canvas proxied="false" bgcolor="0xffffcc">
<simplelayout/>
<button>1</button>
<button>2</button>
<button>3</button>
<button>4</button>
<button>5</button>
</canvas>
リスト1サンプル
axis属性で方向を指定します。値はxあるいはyです。デフォルトはyです。axis="x"にすると横方向になります。
<canvas proxied="false" bgcolor="0xffffcc">
<simplelayout axis="x"/>
<button>1</button>
<button>2</button>
<button>3</button>
<button>4</button>
<button>5</button>
</canvas>
リスト2のサンプル
spacing属性で間隔を指定できます。単位はピクセルです。
<canvas proxied="false" bgcolor="0xffffcc">
<simplelayout spacing="10" axis="x"/>
<button>1</button>
<button>2</button>
<button>3</button>
<button>4</button>
<button>5</button>
</canvas>
リスト3のサンプル
縦と横の<simplelayout>を2つ使うと斜め方向になります。
<canvas proxied="false" bgcolor="0xffffcc">
<simplelayout spacing="5"/>
<simplelayout spacing="10" axis="x"/>
<button>1</button>
<button>2</button>
<button>3</button>
<button>4</button>
<button>5</button>
</canvas>
リスト4のサンプル
<wrappinglayout>
<wrappinglayout>は格子状にビューを自動配置します。大きさを自由に変更できるウインドウや、
リスト5のサンプルのウインドウのサイズを変えてみてください。
<canvas proxied="false" bgcolor="0xffffcc">
<window width="250" height="100" resizable="true">
<wrappinglayout spacing="5"/>
<button>1</button>
<button>2</button>
<button>3</button>
<button>4</button>
<button>5</button>
<button>6</button>
<button>7</button>
<button>8</button>
<button>9</button>
</window>
</canvas>
リスト5のサンプル
<reverselayout>
ソースに書いた順番と逆向きに自動配置するタグです。<simplelayout>での向きを逆にしたものです。
<canvas proxied="false" bgcolor="0xffffcc">
<reverselayout/>
<button>1</button>
<button>2</button>
<button>3</button>
</canvas>
リスト6のサンプル
<stableborderlayout>
3つのビューのサイズについて、
サンプルでは両サイドの青いビューの幅は固定ですが、
<canvas proxied="false" bgcolor="0xffffcc">
<simplelayout spacing="10"/>
<view width="250" height="100">
<stableborderlayout axis="x"/>
<view bgcolor="blue" width="30" height="100" /><!--固定幅-->
<view bgcolor="yellow" height="100" /><!--幅は自動的に残り全部-->
<view bgcolor="blue" width="30" height="100" /><!--固定幅-->
</view>
<view width="100" height="100" >
<stableborderlayout axis="x"/>
<view bgcolor="blue" width="30" height="100" /><!--固定幅-->
<view bgcolor="yellow" height="100" /><!--幅は自動的に残り全部-->
<view bgcolor="blue" width="30" height="100" /><!--固定幅-->
</view>
</canvas>
リスト7のサンプル
<constantlayout>
<constantlayout>を使うと上または左の余白
<canvas proxied="false" bgcolor="0xffffcc">
<simplelayout axis="y" spacing="10"/>
<constantlayout axis="x" value="20"/>
<view bgcolor="red" width="40" height="15"/>
<view bgcolor="aqua" width="50" height="15"/>
<view bgcolor="yellow" width="60" height="15"/>
<view bgcolor="green" width="20" height="15"/>
</canvas>
リスト8のサンプル
<resizelayout>
<resizelayout>は複数のビューのうち固定サイズのものとそれ以外にわけることができます。サイズを指定しないビューは、
サイズを指定しないビューには、
リスト9のサンプルは青いビューが左から30ピクセル、
<canvas proxied="false" bgcolor="0xffffcc">
<view width="400">
<resizelayout axis="x"/>
<view bgcolor="blue" width="30" height="100"/>
<view bgcolor="yellow" height="100" options="releasetolayout"/>
<view bgcolor="blue" width="60" height="100"/>
<view bgcolor="yellow" height="100" options="releasetolayout"/>
<view bgcolor="blue" width="90" height="100"/>
</view>
</canvas>
リスト9のサンプル
<hbox>,<vbox>
単純に縦や横に並べるだけなら、
<canvas proxied="false" bgcolor="0xffffcc">
<vbox spacing="20">
<hbox spacing="10">
<button>1</button>
<button>2</button>
<button>3</button>
<button>4</button>
<button>5</button>
</hbox>
<vbox spacing="10">
<button>6</button>
<button>7</button>
<button>8</button>
<button>9</button>
<button>10</button>
</vbox>
</vbox>
</canvas>
リスト10サンプル
ignorelayout
<simplelayout>などのレイアウトタグがあると、
サンプルで、
<canvas proxied="false" bgcolor="0xffffcc">
<vbox spacing="20">
<vbox spacing="2" bgcolor="green">
<button>1</button>
<button>2</button>
<button x="100" y="20" >3</button>
<button>4</button>
<button>5</button>
</vbox>
<vbox spacing="2" bgcolor="blue">
<button>1</button>
<button>2</button>
<button x="100" y="20" options="ignorelayout">3</button>
<button>4</button>
<button>5</button>
</vbox>
</vbox>
</canvas>
リスト11サンプル
オフセット配置
xoffset、
サンプルでいうと、
<canvas proxied="false" bgcolor="0xffffcc">
<vbox spacing="2" x="20">
<button>1</button>
<button>2</button>
<button xoffset="15" yoffset="10" >3</button>
<button>4</button>
<button>5</button>
</vbox>
リスト12サンプル
コンストレイント
コンストレイントはLZXの強力な機能の1つで、
使用例1
コンストレイントの書式は${・
サンプル13の例では、
2つ目の${this.
<canvas proxied="false" bgcolor="0xffffcc">
<simplelayout spacing="5" axis="x"/>
<view width="50" height="${this.width}" bgcolor="red"/>
<view width="50" height="${this.width*2}" bgcolor="red"/>
<view width="50" height="${this.width/2}" bgcolor="red"/>
リスト13サンプル
使用例2
スライダーの値をビューの幅に連動させた例です。<slider>を動かすとその値がvalueという属性にセットされます。その値を赤いビューの幅の値(width="${sl.
<canvas proxied="false" bgcolor="0xffffcc">
<simplelayout spacing="20"/>
<view width="${sl.value*2}" height="50" bgcolor="red"/>
<slider id="sl" minvalue="10" maxvalue="100" />
</canvas>
リスト14サンプル
使用例3
スライダーの値をビューのx属性に連動させた例です。x="${parent.
<canvas proxied="false" bgcolor="0xffffcc">
<vbox width="100" spacing="20">
<view x="${parent.width-sl.value}" width="10" height="10" bgcolor="red"/>
<slider id="sl" minvalue="10" maxvalue="100" />
</vbox>
</canvas>
リスト15サンプル
使用例4
ウインドウを動かしたりサイズを変更すると、
<canvas proxied="false" bgcolor="0xffffcc">
<vbox y="${win.y}" width="${win.width}" height="${this.width}" bgcolor="red"/>
<window id="win" x="50" width="100" height="100" resizable="true"/>
</canvas>
リスト16サンプル
レイアウト例
これまでに解説したテクニックを使って,Webサイトでよくある画面のレイアウトを2つほど構築してみます。
ログイン画面
簡単なログイン画面を作ってみます。文字は<text>、
<canvas proxied="false" bgcolor="0xffffcc">
<!-- (1) -->
<view width="200" height="150" bgcolor="teal">
<!-- (2) -->
<view width="${parent.width-4}" height="${parent.height-4}" align="center" valign="middle" bgcolor="silver">
<!-- (3) -->
<vbox y="10" align="center" >
<text>ログイン</text>
<edittext/>
<text>パスワード</text>
<edittext password="true"/>
<view height="10"/><!-- (4) -->
<button>ログイン</button>
</vbox>
</view>
</view>
</canvas>
リスト17サンプル
リスト17を解説します。(1)はログインボックス全体のエリア用のビューです。
(2)は幅、
(3)は文字列や入力欄などの部品を入れるビューです。<vbox>なのでタグ内の部品は縦に自動配置します。
(4)の<view height="10"/>とは高さ10ピクセルの透明のエリアです。入力欄とボタンの間隔をあけるためだけに配置しました。 このようにすると自動レイアウトの機能をそのまま使いつつ、
コンテンツ画面
業務アプリやホームページなどでよく見るような画面レイアウトを作ってみます。まず、
<canvas proxied="false" bgcolor="0xffffcc">
<stableborderlayout axis="y"/>
<!-- (1)上段 -->
<view width="${parent.width}" height="50" bgcolor="red">
<text>ヘッダ</text>
</view>
<!-- (2)中段 -->
<hbox width="${parent.width}">
<stableborderlayout axis="x"/>
<!-- (2-1)中段 左 -->
<vbox width="100" height="${parent.height}" bgcolor="yellow">
<text>左サイド</text>
</vbox>
<!-- (2-2)中段 中 -->
<vbox height="${parent.height}">
<text>コンテンツエリア</text>
</vbox>
<!-- (2-2)中段 右 -->
<vbox width="70" height="${parent.height}" bgcolor="yellow">
<text>右サイド</text>
</vbox>
</hbox>
<!-- (3)下段 -->
<view width="${parent.width}" height="30" bgcolor="green">
<text>フッタ</text>
</view>
</canvas>
リスト18サンプル