0

我读过很多类似的帖子,但没有一个能解决我的问题。另一个有趣的事情是,在模拟器上保存了edittext的位置(意味着其他小部件向下移动),但没有显示,另一方面,真实手机上的相同实现甚至没有显示小部件的位置. 我有以下内容,当单击“添加团队成员LinearLayout”时,我需要在其中动态添加一个EditText小部件。TextView

<LinearLayout
            android:id="@+id/layout_add_task"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/separator"
            android:layout_margin="5dp"
            android:background="@color/yellow_background"
            android:orientation="vertical"
            android:padding="5dp">

            <LinearLayout
                android:id="@+id/layout_task_name"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal" >

                <ImageView
                    android:id="@+id/iv_check_research_tasks"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/icon_check_empty" />

                <EditText
                    android:id="@+id/et_task_name"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:selectAllOnFocus="true"
                    android:text="Task Name"
                    android:textSize="20dp"
                    android:textStyle="bold" />
            </LinearLayout>

            <TextView
                android:id="@+id/tv_add_team_member"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:layout_marginTop="5dp"
                android:text="Add a team member"
                android:textColor="@color/text_green"
                android:textSize="15dp"
                android:textStyle="bold" />

            <LinearLayout
                android:id="@+id/ll_add_task"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/tv_add_team_member"
                android:orientation="horizontal"
                android:weightSum="100" >

                <ImageView
                    android:id="@+id/iv_create_assignment_attach"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:layout_weight="10"
                    android:src="@drawable/icon_flag_alt" />

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:layout_marginLeft="5dp"
                    android:layout_weight="15"
                    android:text="Due"
                    android:textSize="15dp" />

                <EditText
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="65"
                    android:hint="None"
                    android:selectAllOnFocus="true" />

                <ImageView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:layout_weight="10"
                    android:src="@drawable/icon_calendar_empty" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="center_horizontal"
                android:orientation="horizontal" >

                <Button
                    android:id="@+id/btn_create_assignment_trash"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginRight="30dp"
                    android:layout_marginTop="5dp"
                    android:text="Trash" />

                <Button
                    android:id="@+id/btn_create_assignment_done"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="30dp"
                    android:layout_marginTop="5dp"
                    android:text="Done" />
            </LinearLayout>
        </LinearLayout>

这是Java代码,onClickListenerTextView的实现。

tvAddTeamMember.setOnClickListener(new OnClickListener() {

        @Override

        public void onClick(View v) {
            LinearLayout ll = (LinearLayout) getActivity().findViewById(R.id.layout_task_name);
            EditText et = new EditText(getActivity());
            LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
            et.setLayoutParams(p);
            et.setText("Text");
            ll.addView(et);

        }
4

6 回答 6

3

你可以这样进行!这不是你要找的。但你的问题会得到解决。

1) 默认情况下,在您的 XML 中添加 EditText 视图并使其不可见。

2) 在单击 TextView 时,使其可见。

请享用 !

于 2013-08-26T07:21:58.137 回答
3

嗨@Anas Azeem:您的代码是正确的。通过您的代码,我们可以动态地将editetxt 添加到线性布局。问题仅在布局文件中。在布局中提到添加布局的方向为“水平”,而不是使用“垂直”,如下所示

<LinearLayout
            android:id="@+id/layout_task_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <ImageView
                android:id="@+id/iv_check_research_tasks"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_launcher" />

            <EditText
                android:id="@+id/et_task_name"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:selectAllOnFocus="true"
                android:text="Task Name"
                android:textSize="20dp"
                android:textStyle="bold" />
        </LinearLayout>
于 2013-08-26T07:32:44.667 回答
1

尝试换行:

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

有了这个:

  android.widget.LinearLayout.LayoutParams p= new android.widget.LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
 //Then do your work
于 2013-08-26T07:33:17.343 回答
0

如果你知道你可能会添加一个布局,你总是可以声明 ViewStub。之后,您只需找到 viewStub 并在其上调用 inflate() :

ViewStub stub = (ViewStub) findViewById(R.id.stub);
View inflated = stub.inflate();

这是在 Android SDK 中推广的方式。因此,您可以在 xml 文件中定义 infalte 布局。

于 2013-08-26T07:16:05.653 回答
0

试试这个代码。替换你的行 ll.addView(et);

由:: ll.addView(et,p);

并删除你的线 et.setLayoutParams(p);

于 2013-08-26T07:29:17.737 回答
0

一个简单的方法来做到这一点。

        Button add = (Button) findViewById(R.id.add_checkpoint);
        final LinearLayout layout = (LinearLayout) findViewById(R.id.addLayout);        
        // layout has assigned weight = "1.0" in xml & it's a child of ScrollView
        add.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                LayoutInflater oLayoutInflater = getLayoutInflater();
                // oView is declared globally & Layout "row_checkpoint" contains a EditText
                oView = oLayoutInflater.inflate(R.layout.row_checkpoint, null);

                final EditText speciesEditText = (EditText) oView
                        .findViewById(R.id.checkpoint); 
                speciesEditText.setId(layout.getChildCount());
                // Perform whatever required over EditText, same way you can add more elements.
                layout.addView(oView);
            }
        });

希望它会有所帮助。

于 2013-10-30T12:27:19.457 回答