为什么LayoutInflater在我的情况下不起作用?

时间:2011-07-12 14:39:23

标签: android android-layout android-emulator android-widget android-manifest

我的 main.xml 布局只包含一个按钮和一个LinearLayout content_area ,如下所示:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">


    <LinearLayout 
        android:id="@+id/myBtns"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:orientation="horizontal"
    >
        <Button
            android:id="@+id/btn_one"
            android:layout_width="100dip"
            android:layout_height="30dip"
                android:text="button one"
         />

    </LinearLayout>

    <LinearLayout 
        android:id="@+id/content_area"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
    >
         <!--inflate layout here-->

    </LinearLayout>


   </LinearLayout>

我有另一个布局( content_one.xml ),它将用于嵌入(膨胀)到 main.xml的content_area(id值)布局:

content_one.xml

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical">

        <TextView.../>
         ... 
        <Button .../>

    </LinearLayout>

我尝试使用LayoutInflater content_one.xml 嵌入到 main.xml content_area中:

public class MyActivity extends Activity{

      private LinearLayout contentArea;

      @Override
      public void onCreate(Bundle savedInstanceState) {

              super.onCreate(savedInstanceState);
              setContentView(R.layout.main);

              contentArea= (LinearLayout) findViewById(R.id.content_area);

              LayoutInflater inflater = (LayoutInflater)MyActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
              View inflatedView = (View) inflater.inflate(R.layout.content_one, null);

              contentArea.addView(inflatedView);
}

但它不起作用, content_one.xml 不会显示在 main.xml content_area中。我在eclipse中从LogCat获得了以下错误消息

请鼠标右键单击下图并查看图像

enter image description here

为什么我的LayoutInflater不起作用?我哪里错了?

1 个答案:

答案 0 :(得分:2)

View正确膨胀,但fill_parent布局上的myBtns高度,因此其他LinearLayout不可见。如果您将其更改为wrap_content,则可以看到另一个LinearLayout。