2012-07-25 99 views
0

我试图在另一个LinearLayout中插入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地址2(我需要在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”。你能告诉我我做错了什么吗?

+0

布局xml文件中的 ikh 2012-07-25 15:10:02

+0

此外,所有这些布局在同一个文件中? – ikh 2012-07-25 15:10:41

+0

嗨ikh。感谢您的回复。布局都来自不同的文件:) – 2012-07-25 15:15:07

回答

2

我想这里有一些关于findViewById如何工作的误解。我会在下面解释它。希望这有助于,让我知道如果没有。

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

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

  2. View.findViewById():此功能可用于查找包含在某个其他视图中的视图。例如。如果您的view1包含view2,并且view2的ID为some_id,则可以通过致电view1.findViewById(R.id.some_id)找到view2。为了这个工作,view1必须完全初始化。例如。如果view1的描述采用XML格式,则必须先将其充分填充。

实质上,如果要使用在单独的XML文件中描述的视图,则必须首先对其进行膨胀。我认为没有办法解决这个问题。