よくあるグリッドレイアウトのサンプルを見てみる

どうもこんばんは、みかんです。

**！！！！とつぜんですがたいせつなおしらせ！！！！**

2020年1月27日
App Maker の提供終了に向けた対応のご案内
https://support.google.com/a/answer/9682494?p=am_announcement&visit_id=637157414793613981-426262357&rd=1


??!???!?!?!???!?

残念ながら2021年1月19日には終了してしまうそうです(涙)
移行先はAppSheetかApp EngineかGoogleフォームだそうです・・・

消すのは忍びないので記事は残して置きますが、何かの間違いじゃ無い限り役に立つことはないでしょう・・・


**！！！！おしらせはおわりです！！！！！**

今回は「よくあるグリッドレイアウトのサンプルを見てみる」という題で書いてみます。
下記ステップでやっていきます。

* 1 下準備
* 2 カスタマイズされたグリッドレイアウト
* 3 エディタの確認
* 4 ヘルプアイコンの内容

# 1 下準備

この記事と同様です。
[Material Galleryテンプレートを見てUIの引き出しを増やす](https://qiita.com/ExistMikan/items/cc1fd8b68b7b6f83303a)

Material Galleryテンプレートで説明します。
上の記事ではテンプレート自体の説明を入れているので、是非見ていただければと思います。

# 2 カスタマイズされたグリッドレイアウト

Sticker Sheetページの、Project Cardsのすぐ下が、既にカスタマイズされたグリッドレイアウトになります。

|![ap01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/52d1c5da-ac5c-caea-d3ca-9f81ed8d6696.png)|
|:-:|

スマホアプリとかでよく見かけるUIですね。

# 3 エディタの確認

ということで、このレイアウトがどのように設定されているかを見ていきます。

|![ap02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/719087ec-4e37-576a-9553-d03c1bd49241.png)|
|:-:|

グリッドレイアウトはこの青く囲まれている部分です。右のアウトラインで言うと**Grid: ProjectGridPanel**です。
青枠がグリッドレイアウト全体で、一つ一つのアイテムは子要素の**Panel: ProjectGridPanelCell**です。

このあたりの細かい説明は、前日の下記記事と丸かぶりしています。

[リストをカスタマイズして見やすくする](https://qiita.com/ExistMikan/private/3a9f1939434620f97341)

そして、そこの説明は前提となる大事なところでもあるので、まだ見ていない方はそちらから先に見ていただけると助かります。

それを一読頂いた前提で、そこと異なる要素についてのみ解説します。

まず、**Panel: ProjectGridPanelCell**はverticalなレイアウトなので、子要素は縦に並べられています。

|![ap03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/0bf01d08-32e3-06e2-224b-c4dd15d49cdb.png)|
|:-:|

画像部分、テキスト部分、ボタン部分と３つのセクションに分かれていますね。
このうちテキスト部分とボタン部分の解説は前記事と被りますので、画像部分のみにフォーカスします。

|![ap04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/746fe2d0-7cfe-f790-a7f3-4687106ff7ec.png)|
|:-:|

**Panel: ImagePanelGrid**の中に、画像とヘルプアイコンの２つが入っていますが、これまでと違い画像の上にヘルプアイコンが覆いかぶさっています。horizontalやverticalレイアウトでは上手く行かないような気がします。

設定を見てみると、layoutプロパティは**「fixed」**になっています。

|![ap05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/63877bb8-4d4f-b52f-af47-f92361928c7f.png)|
|:-:|

これは、子要素は自身の位置を**親要素との位置関係のみで決定**するということです。
ちょっと表現がこれで良いのかは微妙ですが、言い換えると他の兄弟要素(画像からするとヘルプアイコン)とは全く位置の関連性は無いということでもあります。自動的に詰めて並んだり、空いているスペースを分配したりということがありません。

ヘルプアイコンの設定を見てみます。

|![ap06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/e192c6fe-cc9a-2270-d00d-a00a31752c5f.png)|
|:-:|

こんな感じで、**親の**Left, Top, Right, Bottomとの距離を設定しています。ただなんかちょっと右端に寄せたい、だとこの設定だと微妙なので変更してみます。

|![ap07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/0cdb6550-f67f-4c96-3f6f-5f8c207d0d5b.png)|
|:-:|

TopおよびRightが親とゼロ距離という形のほうが意図通りですね。また、右ではなく左に寄せたい場合はLeftを0に、Rightをautoに変えればOKです。

|![ap08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/e695a274-84ad-6fad-0c23-ea61b78a0d06.png)|
|:-:|

こんな感じ。元々の設定は大きさをしっかり考慮に入れて設定していたようですが、、なるべく最も近い端に合わせて設定したほうが親の大きさを変えた時に崩れにくいです。画像も同じ感じです。

# 4 ヘルプアイコンの内容

余談になりますが、ヘルプアイコンはこんなプロパティ構成になっています。

|![ap09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/8383bf1c-f16b-5a13-3c3a-5032bf81845f.png)|
|:-:|

この設定ではデータの詳細テキストを入れているだけですが、ポップアップで表示される内容はHTMLで装飾できます。

|![ap10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/c91d6d80-ab93-3624-ca05-ec52c33e6de3.png)|
|:-:|

この内容はリッチにすることが可能ですが、あまり多くの内容を詰め込むのは微妙だと思いますので、詳細情報が掲載されているリンクなどをつけておくぐらいが良いのかなと思います。


リストの場合と比べて、やることがあまり変わらなかったのではないでしょうか？
リストは子要素を縦に並べるもので、グリッドは子要素を横に並べ、かつ多い場合は折りかえすという部分が違うのみです。
レイアウトを組む時のポイントはほぼ同じなので、慣れてくるとリストなのかグリッドなのかの違いは気にならなくなってくると思います！

以上です。良いApp Makerライフを!