当我点击并填充另一个(Android)时如何添加另一个EditText

时间:2015-04-23 21:33:28

标签: java android user-interface android-edittext

我正在谷歌搜索一段时间,但是我找不到在点击其中后如何添加另一个EditText的方法。

我试着用这张照片描述我的问题:

enter image description here

是否有一个容器提供此功能?

2 个答案:

答案 0 :(得分:2)

您可以将全部5添加到XML中,并将android:visibility="gone"分配给除第一个之外的所有内容。然后,您需要为每个人分配一个TextWatcher,但为了简单起见,我只会将其显示为一个。

et1.addTextChangedListener(new TextWatcher() {
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

                et2.setVisibility(TextUtils.isEmpty(s.toString()) ? View.GONE : View.VISIBLE);
                // The rest of them also???
            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }

            @Override
            public void afterTextChanged(Editable s) {
            }
        });

如果你不想让他们固定数量,你会希望以编程方式创建EditTexts,然后通过调用addView方法<将它们添加到ViewGroups(RelativeLayout的,的LinearLayout,FrameLayout里,...)中的一个/ p>

答案 1 :(得分:1)

检查一下:

public class YourActivity extends Activity {
    private LinearLayout holder;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.your_activity);
        //get a reference to the LinearLayout - the holder of our views
        holder = (LinearLayout) findViewById(R.id.holder);
        addNewEdit();
    }

    private void addNewEdit() {
        //inflate a new EditText from the layout
        final EditText newEdit = (EditText) getLayoutInflater().inflate(R.layout.new_edit, holder, false);
        //add it to the holder
        holder.addView(newEdit);
        //set the text change lisnter
        newEdit.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                //here we decide if we have to add a new EditText view or to
                //remove the current
                if (s.length() == 0 && holder.getChildCount() > 1) {
                    holder.removeView(newEdit);
                } else if (s.length() > 0 && ((before + start) == 0)) {
                    addNewEdit();
                }
            }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });
    }
}

your_activity.xml

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/holder"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
</LinearLayout>

new_edit.xml

<EditText xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent">

</EditText>

编辑:当然,你必须设置正确的填充/边距,并且可能为持有者和你膨胀的物品创建自己的样式布局。