タブでスッキリしたレイアウトを作る

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

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

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から更に下に進み、左から３番目の「Details Card」がタブレイアウトになっています。

|![ap01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/de4834f0-37e6-0a7f-f334-18bae368a0ff.png)|![ap02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/efc5412f-ab89-e993-6088-8e380c498ad6.png)|
|:---:|:---:|

「DETAILS」「ADVANCED」がタブです。クリックするとその下のUIがごっそり変わります。

# 3 エディタの確認

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

|![ap03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/de3ffff1-8539-c50a-9578-60d1c2889962.png)|
|:-:|


タブレイアウトはこの青く囲まれている部分です。右のアウトラインで言うと**Tabs: TabPanel1**です。
その子要素に**Panel: Tab**と**Panel: Tab1**がありますね。これが各タブ毎の内容です。それぞれ選択してみます。

|![ap04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/fd59a39e-87d4-7994-3b37-dca0e31e94d4.png)|![ap05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/e8848371-fa2b-9ca8-9015-a8c16f65f6bb.png)|
|:---:|:---:|

このように、エディタの表示も変わります。
位置的には重なっている要素なのでエディタはどうなるのかなと思いましたが、右サイドバーのアウトラインで選択すると切り替わるようですね。キャンバスのタブをダブルクリックなどした場合は切り替わらなかったです。

# 4 プロパティエディタ深堀り

では、プロパティエディタも確認していきます。

まず一番上のプロパティたちはこれです。

|![ap06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/01bcf638-53af-c087-8a77-4e2febd59959.png)|
|:-:|

「selectedTab」というのは、何番目のタブが選択されているか？という値です。
左端が0になるので、今の設定だと画面表示時は「DETAILS」になります。
ここで1に変えると、画面表示時は「ADVANCED」になりますが、エディタ上は変化はありません。

「onSelectedTabChange」は名前の通りで、タブが切り替わった時に処理を挟めるようです。
基本はこんなところですね。

次もタブレイアウト専用のプロパティです。これが本丸ですね。

|![ap07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/84d5368f-1676-f2ae-8038-db7f6357588a.png)|
|:-:|

さきほど、アウトラインで選択するとエディタのタブも切り替わると書きましたが、上図の一番最初のドロップダウンリストで切り替えることも可能です。

|![gif001-compressor.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/0d1d11c8-3fef-1fb3-c2b8-4feee58cd79d.gif)|
|:-:|

「NEW TAB」を押すと、タブを増やすことができます。また、一番下にある「position」はタブ位置の変更が可能です。

|![gif002-compressor.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/5531f30c-e657-959a-8734-6ccebbcaec21.gif)|
|:-:|

とりあえずNEW TABを連打してみましたが、Tab26までは行きましたね。限界はいくつなんでしょうか。
そんなUIを作ったらものすごい怒られそうですが。

**layout**というプロパティもあり、クリックしてみると「fixed」「vertical」「horizontal」という選択肢が表示されます。
これはPanelウィジェットのlayoutと同一です。
このテンプレートでは、タブのパネルの下にはまた一つのパネルが入れてあるので、切り替えてもさほど変化はありませんでした。

|![ap08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/c0aa90c1-2790-a73a-59ec-1f58d9029242.png)|
|:-:|

こういうことをしなくてもいいようになっている気がしますが、気持ちはものすごくわかります。

**tabTitle**はその名の通りタブのタイトルですね。これは画面に表示されます。
ただ、Detailsとなっているのに表示はDETAILSで大文字になっています。小文字がちゃんと反映されるようにするには、
[ボタンの文字を小文字にする](https://qiita.com/ExistMikan/items/a2dce1f991860296b532)
と同じ様に、細工が必要です。

|![ap09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/84cc23fc-5ee1-eb92-dfc4-3cd05956acdb.png)|
|:-:|

**styles**は別の機会にまとめて書きます(いつだ？)

**visible**と**invisibilityType**もいつも使うやつですね。
visibleのチェックを外すと、そのタブが非表示になります。
ただ、invisibilityTypeは「absent」がレイアウト上からも消える、「hidden」が見た目的に消えるだけで、領域は確保したままという動きのはずですが、試したところどちらを選んでいてもレイアウト上から消えるという動きでした。
まあ、タブなので見えないタブの領域が確保されたままだと変なのでこれで良い気もしますが、であればエディタに表示しないでほしいですよね。もしかしたら何か意味があるのかもしれません。

各タブの内側のレイアウトに関しては、普通にレイアウト組むのとまったく変わらないので割愛します。


タブを使うことで、沢山の画面を一箇所にまとめてスッキリさせることができそうです。タブを使うか？メニューで切り替えるか？など導線をどうするかについては、一概には言えないタイプのアレだと思うので、適宜判断して使っていきましょう！

ということで最後に、タブを沢山増やしたあとのプレビューgifを貼り付けて締めたいと思います。

|![gif003-compressor.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/e2b24e13-2399-d4d9-f464-a77c7ec33b9b.gif)|
|:-:|

「アレ？ shift + マウスホイールころころで横スクロールしないぞ？」
「タブ数に限りがあるのか？」
「端っこにいるにはいるな」
「うわ、キーボードの矢印キーで切り替えられた」
「？！ 端まで行ったらループした」
「第一、タブが沢山あるかどうか見た目だとわかりにくいな」

タブは少なめにしましょう。

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