如何以编程方式将布局添加到当前布局的末尾?

时间:2015-09-29 19:19:21

标签: android android-layout dynamic

看起来这应该很容易,但到目前为止还没有运气。我设置了Activity的主要布局,然后根据单击的按钮,我需要在当前主布局的末尾添加特定布局。

主要活动:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //live_video_layout is a vertical LinearLayout
    setContentView(R.layout.live_video_layout);

    //Psuedo code for clarity; these layouts are ScrollViews that will sit under live_video_layout seen above
    if(button1 is clicked)
      {add R.id.first_layout under live_video_layout}

    else if(button2 is clicked)
      {add R.id.second_layout under live_video_layout
}

这里的任何指导都会非常感激,我完全没有想法。

2 个答案:

答案 0 :(得分:1)

您可以在xml文件中准备两个布局,第一个用于视频视图,第二个用于动态布局:

main_activity.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">


    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/live_video_container">

        <!-- include your live_video_layout.xml or directly add  your views-->

    </LinearLayout>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/dynamic_layouts_container">
        <!-- here we'll add layouts from java code depending on buttons click -->
    </LinearLayout>
</LinearLayout>

然后在你的活动中:

    private LinearLayout mDynamicLayoutsContainer;
    private LayoutInflater mInflater;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main_activity);

        mInflater = LayoutInflater.from(context);
        mDynamicLayoutsContainer = (LinearLayout) findViewById(R.id.dynamic_layouts_container);

        if(button1 is clicked){

          View  firstLayout = mInflater.inflate(R.layout.first_layout , null, false);
          mDynamicLayoutsContainer.addView(firstLayout);

        }else if(button2 is clicked){

          View  secondLayout = mInflater.inflate(R.layout.second_layout , null, false);
          mDynamicLayoutsContainer.addView(secondLayout);

        }
   }

答案 1 :(得分:0)

您需要第三个布局作为父级。然后将R.layout.live_video_layout和新的一个放在第三个布局中。