スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ブログランキング・にほんブログ村へ

--.--.-- | スポンサー広告

Android開発#08 レイアウト

 早く公開できるようなアプリが完成するといいなぁと思いつつ、Android開発に励んでいる毎日(でもないかもしれない)。

 ちょっとここいらでAndroid開発にてはまったことなどを書いてみる。


レイアウトのweight指定

Androidの開発では端末の画面解像度がそれぞれ異なるため、画面のサイズに合わせる必要があります。
画面サイズに合わせる場合、Viewのサイズ指定である、width、heightにfill_parentを指定すると便利。
これを指定しておくと、このViewが残りの画面上の空間を使い切って表示してくれます。
これは最後のView(コントロール)で画面との帳尻を合わせるパターンですね。 Windowsの画面設計でも調整が1つのコントロールのサイズだけで済むので、よく多用していた構成です。(Windowsでは自前でコントロールのサイズを算出して再配置をする必要があるんですよね)

さらにもうちょっと複雑な指定として、3つのViewを並べて、1つ目と3つ目はサイズ指定、真ん中の2つ目のサイズで残りを使いきりたい場合。 この際に2つ目のViewにfill_parentを指定してしまうと、3つ目が画面外に追い出されてしまうことに注意です。
Androidでは、基本的にレイアウト上の順番に表示処理を行っているらしく、2つ目がfill指定だとその時点で画面の余白を使いきってしまうようです。

これを回避するために、weightという指定があります。 これは画面の余白を分配するための指定です。

画面のサイズが100dipだった場合。

View1 10dip
View2 10dip
View3 10dip
                           ↓
View1 10dip
View2 10dip
View3 10dip
空白 70dip ←View3以降の部分に空白が発生します。


View2にfill指定をしてしまうと…
View1 10dip
View2 fill_parent
View3 10dip
                           ↓
View1 10dip
View2 90dip ←View2がFill指定なので画面を使い切る
View3 10dip ←表示されない…

View2にweightを指定すると…
View1 10dip
View2 10dip weight = 1
View3 10dip
                           ↓
View1 10dip
View2 80dip ←weightが指定されているので空白を使い切って表示される
View3 10dip ←ちゃんと表示される

ちなみに、weightは複数のViewに対して設定できるので、View1とView2で1:2の比率で残りの空白を使用するような設定も可能。


て、ここまではまだわかりやすい。(weightの存在に気付くまで結構かかりましたけどね)
はまったのはView2がListViewの場合。
ListViewはリスト内のレコード数に対して可変サイズのため、wrap_contentを指定することがほぼデフォルトです。
なので、以下のように指定してしまいがち。

View1 10dip
View2 wrap_content weight = 1
View3 10dip

この場合、意図的なサイズに表示されるときとされないときがある。 jNTrainでこのような指定をした場合、ListViewが画面いっぱいを使用してしまって、それ以降のViewが表示されない状態となってしまいました。 eclipse上のエディタではちゃんと表示されていたのに。

原因はそれほど難しくは無いです。
weightの空白の分配は、画面サイズからすべてのViewのサイズの合算した値を差し引いたもので行われる模様。 つまり余っていないとだめなんですね。

wrap_contentは表示内容に対して必要分だけ確保という意味なので、当然ListViewの内容が画面内に収まらない場合、画面を使い切ったサイズになる。
この時点で、画面を使い切ってしまうわけですから、空白が生じる余地はない、と。

View1 10dip
View2 10dip weight = 1
View3 10dip

ということで、このように任意の値(十分小さい値)を入れることで解決しました。 ListViewなどの可変サイズのViewは最小表示値は指定してやら無いとだめみたいですね。

この現象はeclipse上のエディタでは意図したサイズで表示されてしまうため厄介でした。
(エディタで表示する際には、ListViewの項目数が0なので「残りの空白」の分配が行われる)

ここらへんの挙動が分かってくると、いろいろ試せるので面白くなって、調子に乗ってjNTrainのレイアウトはどんどん複雑なものに。 もしかしたら変な構成にしちゃってるかの知れないですけど…

というわけで、レイアウトではまった話でした。

テーマ:スマートフォン - ジャンル:携帯電話・PHS

ブログランキング・にほんブログ村へ

2011.04.21 | Comments(0) | Trackback(0) | Android

コメント

コメントの投稿


秘密にする

«  | HOME |  »

FC2Ad

04 | 2017/05 [GO]| 06
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -

最近の記事一覧 カテゴリ一覧 コメント一覧 トラックバック一覧 プロフィール リンク一覧
[カテゴリ]
WEBコンサルティング・ホームページ制作のバンブーウエイブ

ブログ内検索

ブロとも申請フォーム

この人とブロともになる

カスタム検索

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。