2011-12-09 14 views
1

誰もがアンドロイドでカスタムレイアウトを実装する方法を知っていますか?アンドロイドのカスタムレイアウト

私はCustomLayoutクラスを持っています。

CustomLayout extends LinearLayout 
コンストラクタ public CustomLayout(Context context)

public CustomLayout(Context context, AttributeSet attrs)

私は、XMLレイアウト(example.xml)を持って、私は私の活動にコンテンツビューを設定

<com.myproject.layout.CustomLayout 
    android:id="@+id/cl_main"  
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical"> 

    <Button 
    android:id="@+id/button1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="inside button" /> 

</com.myproject.layout.CustomLayout> 

setContentView(R.layout.example); 

私のグローバルレイアウトは膨らんで表示されますが、 "内側のボタン" iレイアウト内にない... アイデア?

+0

あなたのCustomLayoutが全領域を占めていると思います。 wrapcontentとしてlayout_heightを与えます。 –

+0

ボタンが内側にあるため、fill_parentは問題ありません。 ビューが内部にあるフルスクリーンレイアウトが必要です。 – littleDev

答えて

1

このメソッドをオーバーライドする必要があることがわかりました。

public void addView(View child, android.view.ViewGroup.LayoutParams params) 
{ 
    //... 
    llContainer.addView(child, fillParentLayoutParams); 
    //... 
} 

ここで、llContainerはビューを配置するレイアウトです。 このメソッドはインフレータによって呼び出され、ビューにxml定義が移入されます。