我有一个包含EditText和2个按钮的XML布局。如果我单击加号按钮,则以编程方式添加新的edittext。这有效,但edittext看起来不同。根据XML,XML中定义的edittext没有任何特殊属性,所以我认为它不是特定的布局设置。
我的问题是如何让我以编程方式添加EditText看起来一样?
包含这些数字的EditText是我以编程方式添加的edittext' s。空的是在XML中创建的。
screenshot http://www.tozz.nl/temp/screenshot.png
代码:
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>
答案 0 :(得分:5)
Luksprog回答了我的问题:
在创建新视图时传递活动上下文而不是应用程序上下文。
答案 1 :(得分: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));