在另一个linearLayout中插入linearLayout

时间:2012-07-25 15:01:32

标签: android view tags add android-linearlayout

我正在尝试在另一个LinearLayout中插入LinearLayout。我不知道我在做什么是对的。 我需要这样尝试,不使用通货膨胀

      LinearLayout address2;
      address2 = new LinearLayout(this);
      address2 = (LinearLayout)findViewById(R.id.sfsp2_layout);

      LinearLayout teste3 = (LinearLayout)findViewById(R.id.se_contentAdressPostal);

      LinearLayout teste4 = (LinearLayout)teste3.findViewWithTag("teste");
      teste4.addView(address2);

LinearLayout teste3

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/se_contentAdressPostal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="2dp"
    android:background="@drawable/background_tile_address_postal"
    android:orientation="vertical" >

    <include
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        layout="@layout/socio_form_structured_postal" />

LinearLayout teste4

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/sfsp_layout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/background_tile"
    android:orientation="vertical"
    android:tag="teste" >

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/sfsp_layout_horizontal"
        android:layout_width="wrap_content"
        android:layout_height="49dp"
        android:layout_gravity="right"
        android:background="@drawable/background_tile"
        android:orientation="horizontal"
        android:tag="teste" >
        <Button
            android:id="@+id/sfsp_btStructuredPostal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:layout_marginBottom="2dp"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_marginTop="2dp"
            android:hint="@string/sfsp_btStructuredPostal" /> .......

LinearLayour address2(我需要在layout4中插入的布局)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/sfsp2_layout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/background_tile"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/sfsp2_etStructuredPostalApartado"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="2dp"
        android:layout_marginLeft="65dp"
        android:layout_marginRight="55dp"
        android:layout_marginTop="2dp"
        android:layout_weight="0.14"
        android:ems="10"
        android:hint="@string/sfsp2_etStructuredPostalApartado"
        android:inputType="textMultiLine"
        android:scrollHorizontally="false" >

LinearLayout“teste4”位于“teste3”内。我需要在“teste4”中插入LinearLayout“address2”。你能告诉我我做错了吗?。

1 个答案:

答案 0 :(得分:2)

我认为这里有一些关于findViewById如何运作的误解。我将尝试在下面解释它。希望这有帮助,如果没有,请告诉我。

可以使用两种findViewById()

  1. Activity.findViewById():这可以用于在当前活动的主要内容视图中查找视图 - 即使用setContentView()设置的视图。它不能用于任何其他目的。例如,它无法从任何其他布局文件中找到视图 - 该函数根本无法知道如何找到它。据我所知,这是你尝试使用的功能。如果您拥有的最后一个XML文件不是主要布局,则行address2 = (LinearLayout)findViewById(R.id.sfsp2_layout)将失败。

  2. View.findViewById():此函数可用于查找某些其他视图中包含的视图。例如。如果您的view1包含view2,而view2的ID为some_id,则可以通过调用view2找到view1.findViewById(R.id.some_id)。为了使其正常工作,必须完全初始化view1。例如。如果view1的描述是XML格式的,则必须先将其完全膨胀。

  3. 实质上,如果您想使用单独的XML文件中描述的视图,则必须首先对其进行充气。我认为没有办法绕过它。