android – 以编程方式添加多个自定义视图进行布局

前端之家收集整理的这篇文章主要介绍了android – 以编程方式添加多个自定义视图进行布局前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我例如有这样的空布局:

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,我该怎么办?

是否可能以某种方式将适配器中的所有视图放置在ListView中,然后在需要时获取它,并在这些视图上调用addView?

解决方法

您可以膨胀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.

原文链接:https://www.f2er.com/android/312687.html

猜你在找的Android相关文章