どうも!LSSです!!
AndroidStudio+KotlinでAndroidスマホアプリ開発の勉強中です。
今、タイマーアプリを作成しながら、コードを書くというよりはxmlレイアウトを試行錯誤している状態です^^;;;
- たどり着いた結論(こんな風にしたかったのです)
- LinearLayoutの入れ子とlayout_weightの組み合わせは、AndroidStudioに怒られます!
- 格子状のレイアウトならTableLayoutでしょ!
- この時点での画面の雰囲気がこんな感じ
- しっくりは来ないけど、こういうモノと思うしか…?
たどり着いた結論(こんな風にしたかったのです)
アプリ起動時の画面。
ここから、使うタイマーを選ぶボタンを2列で並べているのですが、やりたかった事は
「左列と右列のボタンの幅を同じにしたい!」
だったのです。
また、上記のように幅が同じになっているボタンのAttributesは、
↑このようになっています。
layout_weightを左右のボタンどちらも1に設定すると、どちらのボタンも均等の幅になるハズで、またそうさせる際には、幅を設定するlayout_widthは0dpに設定する、という事ですね。
LinearLayoutの入れ子とlayout_weightの組み合わせは、AndroidStudioに怒られます!
LinearLayout大好きLSSです。←某ブロガーさんの真似になっちゃった
LinearLayoutにはverticalとhorizontalの2種類あり、verticalが中身縦並び、horizontalが中身横並びになります。
だもんで、
(はてなブログの「絵を描く」機能を使ってみましたw)
画面全体をLinearLayout(vertical)にして、その中にLinearLayout(horizontal)を縦並びに3つ置いて、それぞれのLinearLayout(horizontal)にボタンを2つづつ置いて、全てのボタンのlayout_weightを1にしとけばいい、という算段でした。
で、怒られるんですよねぇ、AndroidStudioちゃんに^^;;;
エラーにはならないけど、警告マークが出て、そこに出てくる文を読むと「処理が重くなりまっせ」との事。
サイズを指定せずに、layout_weightで「均等になるようにしてね」っていう曖昧な指示なもんで、「どのサイズにすれば均等になるんかな?」ってOSが考えるのに手間を食う、って事ですね。
かといって、サイズを厳密に指定すると、Androidスマホアプリ開発の難しいところなんですが「ユーザーの端末の画面サイズが様々」であるが故に、レイアウトが大幅に狂う、という難点があります。
格子状のレイアウトならTableLayoutでしょ!
以前にも使ったTableLayout、今回のように格子状(表形式みたいな)のレイアウトを組むなら最善の選択かと思います。
以前にもやったはずなのにねwww
つまり、
↑こういう感じ。
これに変える事で、AndroidStudioちゃんの警告も消えました^^
なお、TableLayoutの中にTableRowを配置する構造って、以前に書いた
HTMLでいうところの<table>タグと<tr>タグの関係に似ていますね。
ああ!!HTMLの<tr>タグってTableRowって意味か!!!
…と今更気づくwww
この時点での画面の雰囲気がこんな感じ
…明らかに右列のボタンのほうが幅広いんですよね^^;
この時の各ボタンのAttributesは
↑こんな風になっていました。
layout_weightを全てのボタンで1にしているのに、なんで均等にならない??
と考えてたら、知識としては知っていたはずの
「layout_weightでバランス調整する時はサイズは0dpにすべき」
っていうのを思い出して、
layout_widthを0dpに設定したところ、
無事、やりたかった「ボタンの幅の均等表示」が出来ました!
※均等表示にしたら「インターバル」が途中改行されちゃったので文字サイズ1段階下げたという事もありましたがw
しっくりは来ないけど、こういうモノと思うしか…?
「layout_widthを指定しない」だったら納得もいくけど、「0dpに設定」っていうのがどうもしっくりこない^^;
ちなみに、同じボタンで「layout_heightを0dpに設定」すると、そっちは普通に縦が0dpサイズになるのも不自然な気がしますが、今んとこ「こういうモノ」と思っておきますw
てなところで、今回はこのへんで!
次回もまた、よろしくお願いします^^