单击按钮时创建 EditText

我想创建一个onclick事件,创建一个EditText. 我尝试了以下代码,但它会擦除所有内容并创建一个带有EditText.


public class MainActivity extends Activity {


    ArrayList<Contact> contact;

    Contact currentcontact;

    EditText nameArea,emailArea,phoneArea;

    int emails=1;

    int phones=1;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        nameArea=findViewById(R.id.name_area);

        emailArea=findViewById(R.id.e1);

        phoneArea=findViewById(R.id.p1);

        contact=new ArrayList<>();

    }


    public void buttonclick(View v){

        if(v.getId()==R.id.addemail){

            createemaileditview();

        }

        if(v.getId()==R.id.addphone){

            createphoneeditview();

        }

        if(v.getId()==R.id.save){


        }

        if(v.getId()==R.id.cancel){

        }


    }

    protected void createemaileditview(){

        LinearLayout outerLayout=new LinearLayout(this);

        outerLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT));

        outerLayout.setOrientation(LinearLayout.VERTICAL);

        EditText email=new EditText(this);

        email.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT,1f));

        outerLayout.addView(email);

        setContentView(outerLayout);

        emails++;

    }

    protected void createphoneeditview(){

        phones++;

    }

}



回首忆惘然
浏览 154回答 2
2回答

人到中年有点甜

您的代码中有一个小错误。您将通过调用 .outerLayout 替换您的主要活动布局setContentView(outerLayout)。您可以通过将 editText 添加到主活动布局而不是创建新布局并替换所有现有内容来获得所需的功能。

MMMHUHU

如果您只有一个 EditText 可以创建,或者您一直希望轻松控制设计,最好在开始时使用 View.INVISIBLE 将它们保持不可见,而不是通过 View.GONE。有了这个,您的设计可以很简单。来自安卓;View.GONE 这个视图是不可见的,它不占用任何布局空间。View.INVISIBLE 这个视图是不可见的,但它仍然占据布局空间。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java