概要
Androidでは、Button(ボタン)、RadioButton(ラジオボタン)、チェックボックス(CheckButton)などの部品を、View(ビュー)やWidget(ウィジェット)と呼びます。
※ここからは、これらの部品を英語表記で、Viewと記載していきます。
そして、このViewを含めることができるViewGroupというものがあります。
androidでは、ViewGroupの中に、Viewを配置していく形をとります。
代表的なViewGroup
| Layout名 | 内容 |
| LinearLayout | 要素を縦または横の一列に並べるレイアウト |
| RelativeLayout | 相対的な位置を指定して部品を配置するレイアウト |
| TableLayout/TableRow | TableLayout:格子上に配置レイアウトです。HTMLのTableタグの構成と似ています。TableRow:テーブルの行 HTMLのtrタグと似ています。 |
| FrameLayout | 1つのViewを配置するだけのレイアウトですが、複数のViewを重ね合わせることもできます。 |
| AbsoluteLayout | 表示位置を絶対座標で指定するレイアウト |
代表的なView
| View名 | 内容 |
| TextView | テキストを表示する |
| EditView | 入力エリアを表示する HTMLのテキストボックス(input type=”text”)に相当 |
| Button | ボタン |
| Checkbox | チェックボックス |
| ImageView | 画像を配置する |
| ImageButton | 画像ボタン |
| RadioButton | ラジオボタン |
| GridView | データを格子状(又は方眼)で表示する(スクロールが出来る) |
| ListView | データをリストで表示する(スクロールが出来る) |
| ProgressBar | プログレスバー |
| AnalogClock / DigitalClock | アナログ時計 / デジタル時計 |
| ZoomSlider | ズームスライダー |
単位
| Androidには様々な画面サイズ、画面密度(解像度)の端末が存在している為、 複数解像度の端末に対応するdp(dip)という最適な単位が用意されています。dp(dip) = density-independent pixelsの略です。 (密度非依存のピクセル) dpは160dpi(dots per inch) の画面を基準とされています。160dpiの画面で、1dipは、1ピクセルと同じになります。 |
画面作成
それでは、頻繁に使用されるレイアウトの1つである、LinearLayout(リニアレイアウト)を使用し説明して行きます。
LinearLayoutは、Viewを縦又は横に配置していくレイアウトです。
Viewは順番に上もしくは、左から順に並べることができます。
LinearLayoutActivity.java
public class LinearLayoutActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_linearlayout);
}
〜〜以下一部省略〜〜
}
上記のactivityのポイントは、レイアウトをセットするsetContentViewのみです。
activity_linearlayout.xml
上記の属性について、記載します。
| 属性 | 内容 |
| orientation | 縦横に配置する vertical:縦に並べる / horizontal:横に並べる |
| layout_width | 横幅 |
| layout_height | 縦幅 |
| layout_weight | レイアウトの比重 |
| layout_gravity | レイアウト自体の配置場所 |
| gravity | レイアウト内のViewの配置場所もしくは、View内のテキストなどの配置場所 |
この例は、まず、画面の大枠であるLinearLayoutに
android:orientation=”vertical”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
を定義していますが、これは、縦に並べて、widthとheightは、
画面一杯にViewを配置するように指定しています。
また、その中に、入れ子で、LinearLayoutが2つ配置されており、
それぞれ、横と縦のレイアウトにしています。
以上が、基本的なLinearLayoutのパターンになります。
つづいて、ListViewの説明になります。
リスト形式の画面を作成する
リスト形式の画面を作成するには、ListViewというViewを使用します。

作成方法は、以下になります。
public class SampleListViewActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sample_list_view);
String[] memoLists = new String[] {
"memo1", "memo2", "memo3", "memo4"
,"memo5", "memo5", "memo6", "memo7"
};
ArrayAdapter adapter = new ArrayAdapter(this,
android.R.layout.simple_list_item_1, memoLists);
ListView listView = (ListView)findViewById(R.id.ListView01);
listView.setAdapter(adapter);
}
上記には、2点のポイントがあります。
ArrayAdapter adapter = new ArrayAdapter(this,
android.R.layout.simple_list_item_1, memoLists);
まず、Adapterを「android.R.layout.simple_list_item_1」とひも付けます。
「android.R.layout.simple_list_item_1」は、Androidにはじめから入っている
レイアウト(TextView)です。
※Adapterは、Viewとデータの橋渡しの役割を担っています。
※ArrayAdapterは、「配列」もしくは「リスト」のデータをTextViewにセットする役割を担っています。
ListView listView = (ListView)findViewById(R.id.ListView01);
listView.setAdapter(adapter);
ListViewに、上記で作成したadapterをセットし、表示させるという流れになります。
つづいて、レイアウトですが、以下のように、ListViewのViewを定義するのみです。
つづいて、ListViewのカスタマイズについて、解説しています。
独自レイアウトの作り方 ListViewのカスタマイズ
上記のように、独自レイアウトを表示させるには、ListViewをカスタマイズします。
public class SimpleAdapterActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_simple_adapter);
SimpleAdapter sa = new SimpleAdapter(this,
getListData(),
R.layout.activity_simple_adapter_row,
new String[]{"content", "created"},
new int[]{R.id.content, R.id.created});
ListView listView = (ListView)findViewById(R.id.ListView01);
listView.setAdapter(sa);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.simple_adapter, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
private List
上記のポイントとして、SimpleAdapterクラスを使用してます。
このクラスは、レイアウト内にある複数のViewにセットできるAdapterです。
SimpleAdapter(Context context, List extends Map> data, int resource, String[] from, int[] to)
| 引数 | 内容 |
| 第1引数 | Context |
| 第2引数 | キーをString型にしたMapのList |
| 第3引数 | レイアウトのリソースID |
| 第4引数 | 第2引数で指定したMapのキーをString型の配列で指定する |
| 第5引数 | 第3引数で指定したレイアウト内にあるViewのIDをint型の配列で指定する(並びは、第4引数で指定したキーと合わせる) |
以下は、レイアウトのメインファイルになります。
つづいて、上記のListViewの中に配置するViewが定義されたレイアウトになります。
まとめ
Androidの画面作成は、はじめ理解するのが難しいかもしれません。ひとつひとつ理解してもらえればと思います。