我正在尝试在另一个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”。你能告诉我我做错了吗?。
答案 0 :(得分:2)
我认为这里有一些关于findViewById
如何运作的误解。我将尝试在下面解释它。希望这有帮助,如果没有,请告诉我。
可以使用两种findViewById()
。
Activity.findViewById()
:这可以用于在当前活动的主要内容视图中查找视图 - 即使用setContentView()
设置的视图。它不能用于任何其他目的。例如,它无法从任何其他布局文件中找到视图 - 该函数根本无法知道如何找到它。据我所知,这是你尝试使用的功能。如果您拥有的最后一个XML文件不是主要布局,则行address2 = (LinearLayout)findViewById(R.id.sfsp2_layout)
将失败。
View.findViewById()
:此函数可用于查找某些其他视图中包含的视图。例如。如果您的view1
包含view2
,而view2
的ID为some_id
,则可以通过调用view2
找到view1.findViewById(R.id.some_id)
。为了使其正常工作,必须完全初始化view1
。例如。如果view1
的描述是XML格式的,则必须先将其完全膨胀。
实质上,如果您想使用单独的XML文件中描述的视图,则必须首先对其进行充气。我认为没有办法绕过它。