goo blog サービス終了のお知らせ 

marunomaruno-memo

marunomaruno-memo

[Android] レイアウト (1) レイアウトの概要

2012年03月20日 | Android
[Android] レイアウト (1) レイアウトの概要
================================================================================

Android では、4 種類のレイアウトがある。

LinearLayout    ウィジェットを縦または横に並べて配置(ボックス・モデル)
RelativeLayout  他のウィジェットとの相対位置を基にして自分を配置
                (ルールベース・モデル)
TableLayout     テーブル形式でウィジェットを配置(グリッド・モデル)
FrameLayout     ひとつのウィジェットを配置

参考
ソフトウェア技術ドキュメントを勝手に翻訳
Android 開発ガイド > フレームワークトピック > 6. ユーザインターフェイス 
                                                > 6.b 共通レイアウトオブジェクト
http://www.techdoctranslator.com/android/guide/ui/layout-objects


レイアウトは、ViewGroup と、ViewGroup.LayoutParams で特徴づけられる。
また、それぞれのレイアウトは、ViewGroup.LayoutParams から継承される 
xxx.LayoutParams がある。(xxx は、AbsListView、RelativeLayout、LinearLayout、
FrameLayout)
それぞれの継承関係は以下のとおり。

                                                  ================
                                                  AbsListView
                                             ---  .LayoutParams
                                             |    ----------------
                                             |    x
                                             |    y
                                             |    ================
                                             |
                                             |
=============        ===================     |    ================
ViewGroup            ViewGroup               |    RelativeLayout
.LayoutParms  <|---  .MarginLayoutParams  <|-+--  .LayoutParms
------------         -------------------     |    ----------------
height               marginBottom            |    above
weidth               marginLeft              |    below
============         marginRight             |    alignLeft
                     marginTop               |    alignRight
                     ===================     |    toLeftOf
                                             |    torightOf
                                             |    centerHorizontal
                                             |    centerVertical
                                             |    ================
                                             |
                                             |
                                             |    ================
                                             |    LinearLayout
                                             |    .LayoutParms
                                             |    ----------------
                                             |    gravity
                                             |    weight
                                             |    ================
                                             |
                                             |
                                             |    ================
                                             |    FrameLayout
                                             ---  .LayoutParms
                                                  ----------------
                                                  gravity
                                                  ================


画面のサイズは、要求サイズと実サイズの 2 種類ある。それぞれ、つぎのメソッドで取
得できる。

・サイズを取得する View クラスのメソッド
---
int getMeasuredWidth()  要求している幅
int getMeasuredHeight() 要求している高さ

int getWidth()          実際の幅
int getHeight()         実際の高さ
---


□ ViewGroup クラス

java.lang.Object
   +    android.view.View
        +    android.view.ViewGroup

ウィジェットを取りまとめることができるビューのスーパークラス。


XML 属性(属性名の前に、名前空間プレフィックス android: がつく)
---
android:addStatesFromChildren   
android:alwaysDrawnWithCache    
android:animateLayoutChanges    
android:animationCache            
android:clipChildren            
android:clipToPadding            
android:descendantFocusability  
android:layoutAnimation         
android:persistentDrawingCache  
---


□ ViewGroup.LayoutParams クラス

java.lang.Object
   +    android.view.ViewGroup.LayoutParams

ViewGroup の内部クラスで、画面のサイズに関するスーパークラス。


XML 属性(属性名の前に、名前空間プレフィックス android: がつく)
---
android:layout_height   ビューの高さ 
android:layout_width    ビューの幅
---

属性の値
---
属性値       値   説明
fill_parent  -1   他のウィジェットの処理後にあまっている部分もすべて使うサイズ
match_parent -1   fill_parent と同じ(Android2.2 以降ではこちらが推奨)
wrap_content -2   ウィジェットが入るサイズ。ウィジェットが大きいときは折り返す
値           正数 単位つきの実正数を指定
---


△ 実正数の単位

Dimension
http://developer.android.com/intl/ja/guide/topics/resources/more-resources.html#Dimension

---
dp  Density-independent Pixels - dpiを基本にした相対的な単位。
    160dpi の画面では、1dp = 1px となる
sp  Scale-independent Pixels - フォントサイズを基本にした相対的な単位。
pt  Points - 物理的な画面での大きさ (1/72 inch = 1 pt)
px  Pixels - 物理的な画面でのドット数
mm  Millimeters - 物理的な画面での大きさ
in  Inches - 物理的な画面での大きさ
---


□ ViewGroup.MarginLayoutParams

java.lang.Object
   +    android.view.ViewGroup.LayoutParams
        +    android.view.ViewGroup.MarginLayoutParams

ViewGroup.LayoutParams のサブクラスで、レイアウトのマージンに関するクラス。


XML 属性(属性名の前に、名前空間プレフィックス android: がつく)
---
android:layout_marginBottom
android:layout_marginLeft  
android:layout_marginRight 
android:layout_marginTop   
---

Java では、
    void  setMargins(int left, int top, int right, int bottom)
メソッドを使って動的に変更できる。

                                                                            以上


最新の画像もっと見る

コメントを投稿

サービス終了に伴い、10月1日にコメント投稿機能を終了させていただく予定です。