点击按钮后显示编辑框。

6

我正在创建一个Android用户表单。我希望在点击按钮时显示编辑文本框,同时,要将原来位于按钮下方的内容向下移动。
如何实现?


3
请使用addViewAt(index,yourEditText)在布局中添加你的视图。 - Hiren Dabhi
@HirenDabhi: 但它如何知道要添加编辑文本的布局?在代码中应该在哪里提到? - Ashwin
请发布您的布局或屏幕截图。 - Triode
这取决于您的需求。假设在线性布局中添加了按钮(位于顶部)和其他一些控件,并且您想要在此布局中添加EditText,则可以使用addViewAt(1,youredittextcontrol)。 - Hiren Dabhi
@HirenDabhi:RelativeLayout l1 =(RelativeLayout)findViewById(r.id.asd)l1.addView(temp,16)。 temp是编辑文本框。 但布局没有变化。 你能在答案部分回答吗? - Ashwin
5个回答

13
如果您只是想在单击按钮时“显示编辑文本框”,为什么不直接将EditText保留在XML布局文件中,在您希望它出现的按钮下方?XML设置其
android:visibility = "gone"
并在活动中创建该实例
EditText et=(EditText)findViewById(R.id.thatEditText);
在您的按钮单击事件中设置
et.setVisibility(View.VISIBLE);

3
    //xml file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

<Button 
    android:id="@+id/btn"
  android:layout_width="fill_parent"
    android:layout_height="wrap_content"  
    android:text="Button"
    />
<EditText 
   android:id="@+id/edtbox"
  android:layout_width="fill_parent"
    android:layout_height="wrap_content"    


    />
</LinearLayout>


//Activity

//oncreate

editText.setVisibility(View.GONE);

btn..setOnClickListener(new OnClickListener() {

                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    editText.setVisibility(View.VISIBLE);
                }
            });

3

在您的布局中定义视图,然后在代码中使用myView.setVisibility(View.VISIBLE)myView.setVisibility(View.GONE)显示和隐藏它。


1

在xml文件中定义你的EditText并将其隐藏起来。当按钮点击时,改变它的可见性为View.Visible。

 YourEditText.setVisibility(View.GONE);

 btn.setOnClickListener(new View.OnClickListener() 
     {
        public void onClick(View v)
         {              
          YourEditText.setVisibility(View.VISIBLE);
          }
       });

1
如果您的布局是相对的,那么addView(yourView, index)将无法工作。假设您想在某个其他控件之后添加视图并引用该控件。
例如:
<RelativeLayout android:id="@+id/templayout">
   <Button android:id="@+id/button"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="add"/>

如果您想在TextView后添加EditText控件,然后在按钮单击时:
RelativeLayout relativeLayout = (RelativeLayout)findViewById(R.id.templayout);
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.WRAP_CONTENT);

    params.addRule(RelativeLayout.BELOW, R.id.title);
    EditText yourEditText = new EditText(this);
    relativeLayout.addView(yourEditText, params);

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