Android 单击按钮时,如何在其下方附加现有线性布局的副本?

Android 单击按钮时,如何在其下方附加现有线性布局的副本?,android,android-studio,kotlin,Android,Android Studio,Kotlin,我想做一个程序,在某个时候,用户将不得不添加一些学校科目作为输入。我创建了输入字段(见下图),当单击“添加”按钮时,将在其下方创建一个相等的字段。“删除”按钮用于删除输入字段,但必须至少有一个输入字段 由于我是Android开发新手,我想知道如何做到这一点。我已经研究了一些网站,但我只能使用addView生成单独的元素,比如textView: val relLay = findViewById<RelativeLayout>(R.id.relLay1) val btnAdd = f

我想做一个程序,在某个时候,用户将不得不添加一些学校科目作为输入。我创建了输入字段(见下图),当单击“添加”按钮时,将在其下方创建一个相等的字段。“删除”按钮用于删除输入字段,但必须至少有一个输入字段

由于我是Android开发新手,我想知道如何做到这一点。我已经研究了一些网站,但我只能使用
addView
生成单独的元素,比如textView:

val relLay = findViewById<RelativeLayout>(R.id.relLay1)
val btnAdd = findViewById<Button>(R.id.btnAdd)
btnAdd.setOnClickListener{
    val tv = TextView(this)
    tv.text = "This is a text view"
    val params : RelativeLayout.LayoutParams = RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.MATCH_PARENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT)
    params.setMargins(10, pos, 10, 10)
    pos += 50     // pos is a variable that was declared previously
    rellay.addView(tv)
}

我在Kotlin(
InputActivity.kt
)中的代码仍然是空的,因为我不能做很多事情。任何帮助都是非常非常欢迎的。我还想从“删除”按钮代码的外观中得到一些帮助,但我最关心的是“添加”按钮。

因此,您需要做的是使用该视图创建自己的布局文件。 然后膨胀视图并将其添加到父视图中

 public View appendView(Activity activity) {
    LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    @SuppressLint("InflateParams") View view = inflater.inflate(R.layout.NAME_OF_YOUR_LAYOUT_FILE, null);
    LinearLayout parentLayout = activity.findViewById(R.id.YOUR_CONTAINER);
    parentLayout.addView(view);
}
Remove与addView相同,但您要做的是Remove view,而不是addView。可能需要添加淡出动画,或者将视图设置为animateLayout

要读取数据,只需执行view.findViewById(R.id.FIELD),然后从中获取相关值并保存。可能想给它上个课