如何在运行时动态添加和删除带有编辑文本的布局

3
我正在开发一款调查应用程序,需要知道如何创建一个布局,使用户可以为一个问题输入多个答案。当用户输入第一个文本后,下一个文本应在第一个文本下方动态生成。
同时,我该如何使编辑文本可删除?
布局如下: enter image description here

你可能需要使用ListViewRecyclerView,因为视图数量未定义,如果数量增加会导致内存问题。 - M.Waqas Pervez
3个回答

3
This code will help you. 这段代码将会帮助你。
activity_main.xml 主活动界面.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/parentLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <Button
        android:id="@+id/buttonView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Create Edit Text" >
    </Button>
</LinearLayout>

MainActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.text.InputFilter;
import android.text.InputType;
import android.util.TypedValue;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
public class MainActivity extends Activity {
    private Button buttonView;
    private LinearLayout parentLayout;
    private int hint=0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        buttonView=(Button)findViewById(R.id.buttonView);
        parentLayout = (LinearLayout)findViewById(R.id.parentLayout);
        buttonView.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                createEditTextView();
            }
        });
    }
    protected void createEditTextView() {
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams (
                RelativeLayout.LayoutParams.WRAP_CONTENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT);
        params.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
        params.setMargins(0,10,0,10);
        EditText edittTxt = new EditText(this);
        int maxLength = 5;
        hint++;
        edittTxt.setHint("editText"+hint);
        edittTxt.setLayoutParams(params);
        // edtTxt.setBackgroundColor(Color.WHITE);
        edittTxt.setInputType(InputType.TYPE_CLASS_TEXT);
        edittTxt.setTextSize(TypedValue.COMPLEX_UNIT_SP,18);
        edittTxt.setId(hint);
        InputFilter[] fArray = new InputFilter[1];
        fArray[0] = new InputFilter.LengthFilter(maxLength);
        edittTxt.setFilters(fArray);
        parentLayout.addView(edittTxt);
    }
}

3

只需创建一个新的 EditText(View) 并将其添加到您的 layout 中,放置在首选位置即可。

LinearLayout linearLayout = (LinearLayout)findViewById(R.id.linearLayoutDecisions);

EditText editText = new EditText(this);

LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);

editText.setLayoutParams(p);

linearLayout.addView(editText);

0
使用TableLayout和TableRow。您可以非常容易地动态添加和删除。 可能是一个很好的起点。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接