膨胀时,RelativeLayout不遵守设定宽度

时间:2011-12-17 17:16:48

标签: android relativelayout layout-inflater

我有一个relativeLayout,我想使用theme.dialog android主题,它的设置宽度应该是240dip。当我指定整个布局并且它是xml中的子项时,这是有效的。但是,当我尝试给xml充气以添加更多视图(下面的代码)时,布局会填充屏幕的宽度。

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>

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:3)

在充气RelativeLayout时,请勿使用您在那里的inflate()方法签名。相反,使用将父容器作为第二个参数的inflate()和作为第三个参数的布尔值。在第二个参数中为RelativeLayout提供最终父级,如果您不想立即添加RelativeLayout,请将false作为第三个参数传递。

至少,当使用RelativeLayout作为RelativeLayout中某行的基础时,此配方会清除各种ListView通胀问题。