Mind for Android マニュアル




レイアウト


 複数のビューを収容する ”容器としてのビュー” があり、これを「レイアウト」と呼びます。


レイアウトの表示


リニアレイアウト

 レイアウトには種類がありますが、そのうちの「リニアレイアウト」は、その内部に縦または横に複数のビューを並べる際の入れ物 として使われるものです。
 あくまで「並べていく」というものなので、子となるビューの位置を絶対的に指定することはできませんが、その代わりどのような画面サイズであっても それなりに ビューを配置できる(=細かいことを考えなくて済む)のが特徴です。

 レイアウトの中にレイアウトを収容 することもできます。
レイアウトは他にもありますが、本バージョンでは 「リニアレイアウト」 のみをサポートします


■レイアウトを生成
 まず「リニアレイアウトを生成」を実行してIDを取得し、そのIDに対してビューを配置したり描画を指示したりします。
文法
リニアレイアウトを生成 → <ID>   (IDは32bit整数)
記述例
		レイアウト1は ID

	リニアレイアウトを生成し レイアウト1に 入れ
 上のソースでは、生成したレイアウトのIDを格納する変数宣言に「レイアウト1は ID」と書いています。
 整数値の格納なので「レイアウト1は 変数」としてももちろん良いのですが、IDを格納する変数であることが分かるように「ID」という変数型を使っています。(「ID」は「変数」を等価定義したものに過ぎず、同じものです)


■子の追加方向を設定
 レイアウトの中に含めるビュー(または下位レイアウト)の並べる方向を設定します。
 本機能を実行しない場合のデフォルトは「水平」です。
文法
<方向を示す定数>を <レイアウトID>に 子の追加方向を設定 → ・
方向を示す定数として以下のシンボルが利用できます(整数値です)。 水平 垂直


■ビューを追加/レイアウトを追加
 ビューやレイアウトを上位レイアウトに追加して見えるようにします。
文法
<ビューID>を  <レイアウトID>に ビューを追加   → ・
<子レイアウト>を <親レイアウト>に  レイアウトを追加 → ・

	記:実際には両者は等価な単語です


■レイアウトをアクティビティに追加
 最上位のレイアウトを表示するときはこの単語を使います。
文法
<レイアウトID>を レイアウトをアクティビティに追加 → ・


■プログラム例
 以上の処理単語を全部使う、まとまったプログラムは以下のようになります。
記述例
※ファイル名	Layout/SpL3views.src

メインとは	(・ → ・)
		_レイアウトは	ID
		_ガイドは	ID
		_ボタン1は	ID
		_ボタン2は	ID
 (レイアウト)
	リニアレイアウトを生成し _レイアウトに 入れ
	垂直を			_レイアウトに 子の追加方向を設定し
	_レイアウトを レイアウトをアクティビティに追加し
 (ガイド)
	テキストビューを生成し	_ガイドに 入れ
	18を			_ガイドに 文字のサイズを設定し
	黒色を			_ガイドに 文字の色を設定し
	緑色を			_ガイドに 背景色を設定し
	「これはレイアウトのサンプルです」を
				_ガイドに 文字を設定し
	_ガイドを _レイアウトに ビューを追加し
 (ボタン1)
	ボタンビューを生成し	_ボタン1に 入れ
	20を			_ボタン1に 文字のサイズを設定し
	「ボタン1」を		_ボタン1に 文字を設定し
	_ボタン1を _レイアウトに ビューを追加し
 (ボタン2)
	ボタンビューを生成し	_ボタン2に 入れ
	20を			_ボタン2に 文字のサイズを設定し
	「ボタン2」を		_ボタン2に 文字を設定し
	_ボタン2を _レイアウトに ビューを追加し。




■レイアウトの背景色
 レイアウトには背景色を設定できます。
文法
<色コード>を <レイアウトID>に 背景色設定 → ・
<色コード>を指定する場合は以下のように16進数で記述すると分かりやすいです。 0xRRGGBB (例: 0xaaeecc) RGBを2桁ずつ指定 0xAARRGGBB (例: 0xffaaeecc) 透明度+RGBを指定 あるいは以下のシンボルも使えます。 黒色 (ブラックも等価) 青色 (ブルーも等価) 水色 (シアンも等価) 濃い灰色 (ダークグレーも等価) 灰色 (グレーも等価) 緑色 (グリーンも等価) 薄い灰色 (ライトグレーも等価) 赤紫色 (マゼンタも等価) 赤色 (レッドも等価) 透明色 (トランスペアレントも等価) 白色 (ホワイトも等価) 黄色 (イエローも等価) レイアウトの背景は黒色がデフォルトになっています。その色で良いのなら 特に指定する必要はありません。
記述例
メインとは	(・ → ・)
	    〜略〜
 (レイアウト)
	リニアレイアウトを生成し _レイアウトに 入れ
	垂直を	         _レイアウトに 子の追加方向を設定し
    0xffee7788を      _レイアウトに 背景色設定し
	_レイアウトを レイアウトをアクティビティに追加し
 (ガイド)
	〜略〜
 (ボタン1)
	〜略〜
 (ボタン2)
	〜略〜
 レイアウトの背景色はデフォルトで黒であるため、レイアウトがどこにあるか分かりにくいのですが、開発時はわざとレイアウトに背景色を付けてみると理解の助けになります。以下がその例です。


 上を見れば、画面全域に「 _レイアウト 」が広がっていることが分かります。
 ちなみにMindでのレイアウトのサイズのデフォルトは 横=「拡張」、高さ=「拡張」ですが、これはAndroid OSのデフォルトと異なります。


■レイアウトの配置
 レイアウト中に収容するビュー(または下位レイアウト)の位置を指定するものです。
文法
<位置情報>を <レイアウトID>に 中身の配置を設定 → ・

<位置情報>として以下のシンボル(実際には配列要素)を利用してください。 無配置 左側 右側 上辺 下辺 中央 水平中央 垂直中央 (「水平中央と 垂直中央を ORし ‥に 中身の配置を設定」 という記述も可)

■レイアウトのサイズ
文法
<幅>と <高さ>を <ID>に レイアウトのサイズを設定 → ・

○幅と高さの単位はピクセルです。 ○数値でなく、シンボル「拡張」「非拡張」という特殊な値も指定できます。  幅に「拡張」を指定すると、幅一杯に引き伸ばした大きさになります。  高さに「拡張」を指定すると、高さ一杯に引き伸ばした大きさになります。 ○本機能による指定が無い場合、 拡張と 拡張を <ID>に レイアウトのサイズを設定 → ・  が指定されているのと同じです。(ビューのサイズのデフォルトとは違います)
記述例
※ファイル名	Layout/SpLcomplex.src

メインとは	(・ → ・)
		_大レイアウトは	ID
		_上段レイアウトは	ID
		_下段レイアウトは	ID
		_挨拶文は		ID
		_第二文は		ID
		_ボタン1は		ID
		_ボタン2は		ID

 (−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−)
 (大レイアウト)
	リニアレイアウトを生成し _大レイアウトに 入れ
	垂直を _大レイアウトに 子の追加方向を設定し
	_大レイアウトを レイアウトをアクティビティに追加し

 (−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−)
 (上段レイアウト)
	リニアレイアウトを生成し _上段レイアウトに 入れ
	水平を			_上段レイアウトに 子の追加方向を設定し
	右側を			_上段レイアウトに 中身の配置を設定し
	非拡張と 非拡張を  _上段レイアウトに レイアウトのサイズを設定し
	0xff445566を		_上段レイアウトに 背景色設定し
	_上段レイアウトを _大レイアウトに レイアウトを追加し

  (挨拶文)
	テキストビューを生成し _挨拶文に 入れ
	18を			_挨拶文に 文字のサイズを設定し
	黒色を			_挨拶文に 文字の色を設定し
	緑色を			_挨拶文に 背景色を設定し
	水平中央と 下辺を ORし
				_挨拶文に 中身の配置を設定し
	「こんにちは1」を	_挨拶文に 文字を設定し
	160と 80を _挨拶文に ビューのサイズを設定し
	_挨拶文を _上段レイアウトに ビューを追加し

  (第二文)
	テキストビューを生成し _第二文に 入れ
	18を			_第二文に 文字のサイズを設定し
	黒色を			_第二文に 文字の色を設定し
	赤色を			_第二文に 背景色を設定し
	水平中央を		_第二文に 中身の配置を設定し
	「こんにちは2」を	_第二文に 文字を設定し
	非拡張と 非拡張を	_第二文に ビューのサイズを設定し
	_第二文を _上段レイアウトに ビューを追加し

 (−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−)
 (下段レイアウト)
	リニアレイアウトを生成し _下段レイアウトに 入れ
	水平を			_下段レイアウトに 子の追加方向を設定し
	左側を			_下段レイアウトに 中身の配置を設定し
	240と 120を   _下段レイアウトに レイアウトのサイズを設定し
	0xff446655を		_下段レイアウトに 背景色設定し
	_下段レイアウトを _大レイアウトに レイアウトを追加し

  (ボタン1)
	ボタンビューを生成し _ボタン1に 入れ
	20を			_ボタン1に 文字のサイズを設定し
	水平中央を		_ボタン1に 中身の配置を設定し
	「ボタン1」を		_ボタン1に 文字を設定し
	非拡張と 非拡張を	_ボタン1に ビューのサイズを設定し
	_ボタン1を _下段レイアウトに ビューを追加し

  (ボタン2)
	ボタンビューを生成し _ボタン2に 入れ
	20を			_ボタン2に 文字のサイズを設定し
	水平中央を		_ボタン2に 中身の配置を設定し
	「ボタン2」を		_ボタン2に 文字を設定し
	非拡張と 非拡張を	_ボタン2に ビューのサイズを設定し
	_ボタン2を _下段レイアウトに ビューを追加し
(−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−)
    。


 上では、「大レイアウト」という全体のレイアウトの下位として「上段レイアウト」「下段レイアウト」の二つを定義しています。
 上段と下段レイアウトは背景色をつけているのでその領域が分かります。
 上段レイアウトは幅・高さ共に「非拡張」をそのサイズとして指定しているので、中に収容するビューの合計がそのままレイアウトサイズになっいます(幅・高さ共に余りがありません)
 下段レイアウトについては幅と高さのサイズを明示していますが、ボタン2つを収容するのに幅が足りなくなり、「ボタン2」の文字が折りたたまれているのが分かります。(これはわざとです)


■レイアウトのパディング
 レイアウトの内部に余裕を作ります。
文法
<左>、<上>、<右>、<下>を <ID>に レイアウトのパディングを設定 → ・

	<左>、<上>、<右>、<下>の単位はピクセルです。
記述例
※ファイル名	Layout/SpLpadding.src

メインとは	(・ → ・)
		_大レイアウトは	ID
		_上段レイアウトは	ID
		_下段レイアウトは	ID
		_挨拶文は		ID
		_第二文は		ID
		_ボタン1は		ID
		_ボタン2は		ID

 (−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−)
 (大レイアウト)
	リニアレイアウトを生成し _大レイアウトに 入れ
	垂直を _大レイアウトに 子の追加方向を設定し
	_大レイアウトを レイアウトをアクティビティに追加し

 (−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−)
 (上段レイアウト)
	リニアレイアウトを生成し _上段レイアウトに 入れ
	水平を			_上段レイアウトに 子の追加方向を設定し
	右側を			_上段レイアウトに 中身の配置を設定し
	非拡張と 非拡張を	_上段レイアウトに レイアウトのサイズを設定し
	0xff445566を		_上段レイアウトに 背景色設定し
	20、20、20、20を _上段レイアウトに レイアウトのパディングを設定し
	_上段レイアウトを _大レイアウトに レイアウトを追加し

  (挨拶文)
	テキストビューを生成し _挨拶文に 入れ
	18を			_挨拶文に 文字のサイズを設定し
	黒色を			_挨拶文に 文字の色を設定し
	緑色を			_挨拶文に 背景色を設定し
	水平中央と 下辺を ORし
				_挨拶文に 中身の配置を設定し
	「こんにちは1」を	_挨拶文に 文字を設定し
	160と 80を _挨拶文に ビューのサイズを設定し
	_挨拶文を _上段レイアウトに ビューを追加し

  (第二文)
	テキストビューを生成し _第二文に 入れ
	18を			_第二文に 文字のサイズを設定し
	黒色を			_第二文に 文字の色を設定し
	赤色を			_第二文に 背景色を設定し
	水平中央を		_第二文に 中身の配置を設定し
	「こんにちは2」を	_第二文に 文字を設定し
	非拡張と 非拡張を	_第二文に ビューのサイズを設定し
	_第二文を _上段レイアウトに ビューを追加し

 (−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−)
 (下段レイアウト)
	リニアレイアウトを生成し _下段レイアウトに 入れ
	水平を			_下段レイアウトに 子の追加方向を設定し
	左側を			_下段レイアウトに 中身の配置を設定し
	240と 120を	_下段レイアウトに レイアウトのサイズを設定し
	0xff446655を		_下段レイアウトに 背景色設定し
	20、20、20、20を _下段レイアウトに レイアウトのパディングを設定し
	_下段レイアウトを _大レイアウトに レイアウトを追加し

  (ボタン1)
	ボタンビューを生成し _ボタン1に 入れ
	20を			_ボタン1に 文字のサイズを設定し
	水平中央を		_ボタン1に 中身の配置を設定し
	「ボタン1」を		_ボタン1に 文字を設定し
	非拡張と 非拡張を	_ボタン1に ビューのサイズを設定し
	_ボタン1を _下段レイアウトに ビューを追加し

  (ボタン2)
	ボタンビューを生成し _ボタン2に 入れ
	20を			_ボタン2に 文字のサイズを設定し
	水平中央を		_ボタン2に 中身の配置を設定し
	「ボタン2」を		_ボタン2に 文字を設定し
	非拡張と 非拡張を	_ボタン2に ビューのサイズを設定し
	_ボタン2を _下段レイアウトに ビューを追加し
 (−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−)
    。

 上のように、上段レイアウト、下段レイアウト共に、すぐ内側に20ピクセルの余裕が作られています。


■レイアウトのマージン
 レイアウトの外部に余裕を作ります。
文法
<左>、<上>、<右>、<下>を <ID>に レイアウトのマージンを設定 → ・

	<左>、<上>、<右>、<下>の単位はピクセルです。
記述例
※ファイル名	Layout/SpLmargin.src

メインとは	(・ → ・)
		_大レイアウトは	ID
		_上段レイアウトは	ID
		_下段レイアウトは	ID
		_挨拶文は		ID
		_第二文は		ID
		_ボタン1は		ID
		_ボタン2は		ID

 (−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−)
 (大レイアウト)
	リニアレイアウトを生成し _大レイアウトに 入れ
	垂直を _大レイアウトに 子の追加方向を設定し
	_大レイアウトを レイアウトをアクティビティに追加し

 (−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−)
 (上段レイアウト)
	リニアレイアウトを生成し _上段レイアウトに 入れ
	水平を			_上段レイアウトに 子の追加方向を設定し
	右側を			_上段レイアウトに 中身の配置を設定し
	非拡張と 非拡張を	_上段レイアウトに レイアウトのサイズを設定し
	0xff445566を		_上段レイアウトに 背景色設定し
	20、20、20、20を _上段レイアウトに レイアウトのマージンを設定し
	_上段レイアウトを _大レイアウトに レイアウトを追加し

  (挨拶文)
	テキストビューを生成し _挨拶文に 入れ
	18を			_挨拶文に 文字のサイズを設定し
	黒色を			_挨拶文に 文字の色を設定し
	緑色を			_挨拶文に 背景色を設定し
	水平中央と 下辺を ORし
				_挨拶文に 中身の配置を設定し
	「こんにちは1」を	_挨拶文に 文字を設定し
	160と 80を _挨拶文に ビューのサイズを設定し
	_挨拶文を _上段レイアウトに ビューを追加し

  (第二文)
	テキストビューを生成し _第二文に 入れ
	18を			_第二文に 文字のサイズを設定し
	黒色を			_第二文に 文字の色を設定し
	赤色を			_第二文に 背景色を設定し
	水平中央を		_第二文に 中身の配置を設定し
	「こんにちは2」を	_第二文に 文字を設定し
	非拡張と 非拡張を	_第二文に ビューのサイズを設定し
	_第二文を _上段レイアウトに ビューを追加し

 (−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−)
 (下段レイアウト)
	リニアレイアウトを生成し _下段レイアウトに 入れ
	水平を			_下段レイアウトに 子の追加方向を設定し
	左側を			_下段レイアウトに 中身の配置を設定し
	240と 120を	_下段レイアウトに レイアウトのサイズを設定し
	0xff446655を		_下段レイアウトに 背景色設定し
	20、20、20、20を _下段レイアウトに レイアウトのマージンを設定し
	_下段レイアウトを _大レイアウトに レイアウトを追加し

  (ボタン1)
	ボタンビューを生成し _ボタン1に 入れ
	20を			_ボタン1に 文字のサイズを設定し
	水平中央を		_ボタン1に 中身の配置を設定し
	「ボタン1」を		_ボタン1に 文字を設定し
	非拡張と 非拡張を	_ボタン1に ビューのサイズを設定し
	_ボタン1を _下段レイアウトに ビューを追加し

  (ボタン2)
	ボタンビューを生成し _ボタン2に 入れ
	20を			_ボタン2に 文字のサイズを設定し
	水平中央を		_ボタン2に 中身の配置を設定し
	「ボタン2」を		_ボタン2に 文字を設定し
	非拡張と 非拡張を	_ボタン2に ビューのサイズを設定し
	_ボタン2を _下段レイアウトに ビューを追加し
 (−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−)
    。




■レイアウトのウェイト
 複数のレイアウトを並べる際、指定した比率の大きさで、かつ、親サイズ一杯に配置します。
 幅や高さ全体を二等分・三等分したレイアウトを配置するのに使います。
 合計した幅または高さはいっぱいになるため、パラメータ「拡張」を使ってレイアウトサイズを指定する必要はありません。
文法
<比率>を <ID>に レイアウトのウェイトを設定 → ・
 概念は「ビューのウェイトを設定」と同じであるため、記述例と画面サンプルについてはそちらを参照してください。


レイアウトの削除

■一つのレイアウトの削除
 レイアウトの削除には生成時のIDを指定します。
 見え方としては「削除して詰め」になります。
文法
<子ID>を <親ID>から レイアウトを削除 → ・
記述例
	_下段レイアウトを _大レイアウトから レイアウトを削除し

■すべてのレイアウトの削除
 指定した親レイアウトに所属するすべてのレイアウトを削除します。
 見え方としては「削除して詰め」になります。
文法
<親ID>から すべてのレイアウトを削除 → ・
記述例
	_大レイアウトから すべてのレイアウトを削除し

■レイアウトを削除するプログラム例
記述例
※ファイル名  Layout/SpLdelete.src

  〜略〜
      (ソースファイルを直接ご参照ください)
  〜略〜





多くのボタンを配置する複雑なレイアウト例

章タイトルは「ボタン」と言っていますが、ボタンビューを例にとっているだけであり、他のビューすべてに適用できます

■一次元の多数のボタン



 上記のようなボタン配置はよく使われるものです。これを実現するために、一つ一つのボタンの生成や配置をそれぞれにコード記述するのは能率がよくありません。このようなボタン群は繰り返し処理で記述することを勧めます。そうすれば後からボタンが増えたような場合でも修正は最小限で済みます。
 上の図のソースコードは以下のようなものです。
記述例
※ファイル名  Layout/SpButtons.src

メインとは
        _ボタン名は 文字列定数配列   ←この要素を増やすだけでボタンを増やせる
            「処理1」
            「処理2」
            「処理3」
            「終了」

        _ボタン数は  数値 _ボタン名の 要素数

        _レイアウトは   ID
        _ボタンIDは _ボタン数の ID

  本体とは

 (レイアウト)
    リニアレイアウトを生成し _レイアウトに 入れ
    垂直を     _レイアウトに 子の追加方向を設定し
    _レイアウトを レイアウトをアクティビティに追加し

 (ボタン群)
    _ボタン数を
    回数指定し
        ボタンビューを生成し  _ボタンID(回数)に 入れ
        20を         _ボタンID(回数)に 文字のサイズを設定し
        拡張と 非拡張を     _ボタンID(回数)に ビューのサイズを設定し
        _ボタン名(回数)を  _ボタンID(回数)に 文字を設定し
        _ボタンID(回数)を _レイアウトに ビューを追加し
        _ボタンID(回数)を クリックリスナーを登録し
    繰り返し。
 上記のような記述にしておけば、たとえば後になって「処理4」というボタンが増えた時でも、 「_ボタン名は 文字列定数配列」 の配列要素を一つ増やすだけで済みます。(初期描画については‥ですが)


■二次元の多数のボタン



 上記のように二次元状に配置されたボタンを描画する例です。
 これは 「大きなサンプルアプリ − 逆ポーランド電卓」 というサンプルのソースコードから、ボタン描画部分だけを抜粋したものです。
 ソースコードのサイズが大きいので本マニュアルには掲載しません。ソースファイル( Layout/SpBcalc.src )を直接参照してください。
記述例
※ファイル名  Layout/SpBcalc.src

  〜略〜
      (ソースファイルを直接ご参照ください)
  〜略〜

 ソースコードが少し複雑になっていますが、ポイントは以下の通りです。
 スクリーンショットを見ると分かりますが、左側のボタングループと右側のグループに分け、それぞれをレイアウトにしています。
 たとえば左側のボタングループ内では、1行に3個のボタンを1つの小レイアウトに収容し、そのレイアウトを縦に4行分収容しています。



Copyright(C) 2000 Scripts Lab. Inc.