如果我例如有这样的空布局:
layout1.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > </LinearLayout>
还有一些这样的布局:
layout2.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" > <TextView android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView 1" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button 2" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button 3" android:layout_weight="1"/> </LinearLayout>
我想通过编程方式将layout2.xml添加到layout1.xml中.我需要有多个不同版本的layout2.xml,当我想要添加它.每个人在TextView和Buttons上都会有不同的文本.
在常规的Android视图的情况下,我通常会像这样使用addView:
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv1 = new TextView(this); tv1.setText("HELLO"); my_linear_layout.addView(tv1); Button btn2 = new Button(this); bt2.setText("WORLD"); my_linear_layout.addView(btn2); }
如果我没有像TextView或Button这样简单的东西,如果我有自己的xml定义的View,我该怎么办?
解决方法
您可以膨胀layout2.xml文件,编辑文本,并将其添加到第一个布局:
public class MyActivity extends Activity { private ViewGroup mLinearLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout1); mLinearLayout = (ViewGroup) findViewById(R.id.linear_layout); addLayout("This is text 1","This is first button","This is second Button"); } private void addLayout(String textViewText,String buttonText1,String buttonText2) { View layout2 = LayoutInflater.from(this).inflate(R.layout.layout2,mLinearLayout,false); TextView textView = (TextView) layout2.findViewById(R.id.button1); Button button1 = (Button) layout2.findViewById(R.id.button2); Button button2 = (Button) layout2.findViewById(R.id.button3); textView1.setText(textViewText); button1.setText(buttonText1); button2.setText(buttonText2); mLinearLayout.addView(layout2); } }
你可能想要将layout2.xml根视图的android:layout_height更改为wrap_content.