1

我正在尝试将 a 插入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);

线性布局 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" />

线性布局 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" >

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

4

1 回答 1

2

我认为这里对findViewById工作原理存在一些误解。我将在下面尝试解释它。希望这会有所帮助,如果没有,请告诉我。

有两种可能findViewById()可以使用。

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

  2. View.findViewById():此函数可用于查找包含在其他视图中的视图。例如,如果你有view1那个 contains view2,并且view2有 ID some_id,那么你可以view2通过调用找到view1.findViewById(R.id.some_id)。为了使其工作,view1必须完全初始化。例如,如果view1' 的描述是在 XML 中,它必须首先完全膨胀。

本质上,如果您想使用在单独的 XML 文件中描述的视图,您必须首先对其进行扩充。我认为没有办法解决它。

于 2012-07-25T15:37:29.990 回答