2011-12-17 5 views
1

私は、theme.dialog androidテーマを使用したいrelativeLayoutを持っています。設定された幅は240dipです。私がレイアウト全体を指定し、それがxmlの子である場合、これは機能します。しかし、xmlを膨らませてより多くのビュー(下のコード)を追加しようとすると、Layoutが画面の幅を塗りつぶします。RelativeLayoutは、膨張時に幅を設定することを守らない

Context context = this; 
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    RelativeLayout header = (RelativeLayout) inflater.inflate(R.layout.headphonepopupheader, null); 

headphonepopup.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="240dp" 
android:layout_height="wrap_content" > 

<ImageButton 
    android:id="@+id/closebutton" 
    android:layout_width="24dp" 
    android:layout_height="24dp" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentRight="true" 
    android:layout_marginLeft="216dp" 
    android:background="@drawable/closebutton" /> 

</RelativeLayout> 

はこれを解決する方法はありますか?

答えて

3

RelativeLayoutを膨らませるときは、そこにあるinflate()メソッドシグネチャを使用しないでください。代わりに、inflate()を使用して、親コンテナを2番目のパラメータに、ブール値を3番目のパラメータとして使用します。 2番目のパラメータにRelativeLayoutの最終的な親を指定し、すぐにRelativeLayoutを追加しない場合は、falseを3番目のパラメータとして渡します。

RelativeLayoutListViewの行の基礎として使用すると、このレシピはあらゆる種類のインフレーション問題を解決します。

+0

相対値をViewGroupのルートにしたいと思います。これは可能ですか? – Frazerm63

+0

@ Frazerm63:あなたが作成するものはすべて、他のものの中に入ります。 'setContentView()'を呼び出しても、 'View'は' Activity'によって供給された別のコンテナの中に入れられます。したがって、このRelativeLayoutをコンテンツビューにしたい場合は、 'setContentView()'を呼び出し、Androidでレイアウトを拡張させるようにしてください。 – CommonsWare

関連する問題