如何在Activity Kotlin中使用多个XML文件

时间:2019-01-24 13:53:10

标签: android xml android-layout kotlin

是否有机会初始化一个以上的.xml文件,并在需要时使用其中的元素?

这是我的android代码:

   mStepOneView                    = getLayoutInflater().inflate(R.layout.activity_exclusion_length, null);
   mStepTwoView                    = getLayoutInflater().inflate(R.layout.activity_gambling_sites, null);
   mStepThreeView                  = getLayoutInflater().inflate(R.layout.activity_info_sites, null);
   mStepFourView                   = getLayoutInflater().inflate(R.layout.activity_custom_websites, null);
   mStepFiveView                   = getLayoutInflater().inflate(R.layout.activity_activate_self_exclusion, null);

我有一个容器,我将在其中替换不同的步骤-每个步骤都是不同的.xml布局,并且从这些xml文件中获取了每个元素。我想在 Kotlin 中执行此操作,问题是如果mStepOneView膨胀,则无法从mStepTwoView获取元素值。

2 个答案:

答案 0 :(得分:1)

实际上,您使用了错误的方法,或者应该使用片段(如果孩子已经是父母,那么应该是孩子),或者应该在主布局中声明一个空布局,而仅动态添加其他XML(如布局)。您可以使用以下代码。

// get your inner relative layout child
RelativeLayout rl = (RelativeLayout) findById(R.id.rl);


// inflate content layout(Other XML file) and add it to the relative 
// layout as a child and update it with different layout (XML) files conditionally 

LayoutInflater layoutInflater = (LayoutInflater) 
        this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);    
rl.addView(1, layoutInflater.inflate(R.layout.content_layout, this, false) ); 

答案 1 :(得分:0)

我认为您可以通过在主要xml关键字中添加“ include”并控制每个xml布局的可见性来处理它。 因此,您将需要膨胀一个包含所有布局的xml布局,并通过获取具有id的布局并设置可见性消失或可见等等来控制要显示的xml布局。

 <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <include 
          android:id="@+id/activity_exclusion_length"
          layout="@layout/activity_exclusion_length" />
       <include layout="@layout/activity_gambling_sites" />
       <include layout="@layout/activity_info_sites" />

 <LinearLayout/>