3

我有一个包含 EditText 和 2 个按钮的 XML 布局。如果我单击加号按钮,则会以编程方式添加一个新的编辑文本。这可行,但编辑文本看起来不同。根据 XML,XML 中定义的 edittext 没有任何特殊属性,所以我相信它不是特定的布局设置。

我的问题是如何使我以编程方式添加的 EditText 看起来一样?

包含数字的 EditText 是我以编程方式添加的 edittext。空的正在 XML 中创建。

截屏
(来源:tozz.nl

代码:

        LinearLayout baseLayout = (LinearLayout) findViewById(R.id.baseLayout);

        LinearLayout linearLayout = new LinearLayout(getApplicationContext());
        linearLayout.setId(100 + numPlayers);
        linearLayout.setOrientation(LinearLayout.HORIZONTAL);

        EditText editText = new EditText(getApplicationContext());
        editText.setText(editText.toString().substring(25, 30));

        ImageButton delButton = new ImageButton(getApplicationContext());
        delButton.setImageResource(R.drawable.ic_delete);

        linearLayout.addView(editText);
        linearLayout.addView(delButton);

        baseLayout.addView(linearLayout);

我的 XML 如下:

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

        <EditText
            android:id="@+id/editPlayer1"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_weight="1"
            android:gravity="center_vertical" />



        <ImageButton
            android:id="@+id/addPlayer1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_input_add" />

    </LinearLayout>
4

2 回答 2

5

Luksprog 回答了我的问题:

创建新视图时传递活动上下文而不是应用程序上下文。

于 2012-12-10T09:28:09.190 回答
3

添加正确的视图LayoutParams应该使EditText布局中的初始视图类似:

    linearLayout.addView(editText, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT, 1.0f));
    linearLayout.addView(delButton, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT));

    baseLayout.addView(linearLayout, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,
            LinearLayout.LayoutParams.WRAP_CONTENT));
于 2012-12-09T17:50:39.860 回答