gpt4 book ai didi

java - 单击复制表单布局

转载 作者:行者123 更新时间:2023-11-30 11:16:10 25 4
gpt4 key购买 nike

我有一个表单,让用户可以选择添加更多要填写的字段。用户通过单击按钮添加更多字段。单击该按钮时,它会复制一个 RelativeLayout,该 RelativeLayout 在另一个 RelativeLayout 中包含表单元素。

这是我要复制的表格

<RelativeLayout
android1:id="@+id/questionTemplate"
android1:layout_width="wrap_content"
android1:layout_height="60dp"
android1:layout_alignParentLeft="true"
android1:layout_below="@+id/TextView01"
>

<Button
android1:id="@+id/Button02"
android1:layout_width="75dp"
android1:layout_height="20dp"
android1:layout_alignParentBottom="true"
android1:layout_alignParentRight="true"
android1:background="@drawable/purplebutton"
android1:text="BROWSE"
android1:textColor="@drawable/button_text_color"
android1:textSize="10sp"
/>

<EditText
android1:id="@+id/EditText02"
android1:layout_width="match_parent"
android1:layout_height="25dp"
android1:layout_above="@+id/Button02"
android1:layout_alignParentLeft="true"
android1:background="@drawable/textlines"
android1:ems="10"
android1:hint="50 WORDS OR LESS"
android1:inputType="textMultiLine"
android1:paddingLeft="5dp"
>

<requestFocus />
</EditText>

<TextView
android1:id="@+id/TextView03"
android1:layout_width="wrap_content"
android1:layout_height="wrap_content"
android1:layout_alignParentBottom="true"
android1:layout_marginRight="19dp"
android1:layout_toLeftOf="@+id/Button02"
android1:text="ADD PICTURE OR VIDEO"
android1:textSize="10sp"
/>
</RelativeLayout>

它位于另一个 ID 为“questionsContainer”的 RelativeLayout 中。当用户单击 ID 为“makeLayoutButton”的按钮时,它应该在另一个实例下方添加另一个“questionTemplate”实例。

这是当用户点击按钮时我正在做的事情

public void onClick(View v) {

Toast toast;
switch (v.getId()) {
case R.id.makeLayoutButton:


LayoutInflater vi = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v1 = vi.inflate(R.layout.make_question, null);


// template to be copied
RelativeLayout target = (RelativeLayout) v1.findViewById(R.id.questionTemplate);

// insert into main view
RelativeLayout insertPoint = (RelativeLayout)findViewById(R.id.questionsContainer);

insertPoint.addView(target);


break;

}
}

但它一直在崩溃,日志告诉我我需要先在父对象上调用 removeView。但是当我这样做时,它只是删除了容器的所有子项,并给我留下了一份表格副本,而没有重复。关于我哪里出错的任何线索?我觉得它与 ids 有关系。

最佳答案

当然,输出是正确的。您正在尝试添加一个已经存在的 View。您不会创建(复制)新的 View,而是使用 findViewById() 方法使用现有的。

为了创建实际的 View,您应该使用 inflate() 方法:

RelativeLayout target = (RelativeLayout) v1.inflate(R.id.questionTemplate, null); // if v1 is container for this R.id.questionTemplate layout

关于java - 单击复制表单布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25034775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com