Android开发:动态添加EditText至TableRow后无法显示的问题
问题:TableRow中添加EditText无法显示的解决办法
问题场景
我尝试通过代码向TableRow中添加若干EditText控件,但这些控件完全无法在屏幕上显示。奇怪的是,如果直接把EditText加到TableLayout里就能正常显示,但我确实需要把这些输入框放在同一行里……
问题代码
public void createPlayers(){ EditText[] editTextSpieler = new EditText[anzahl_Spieler]; TableRow tableRow = new TableRow(getActivity()); tableRow.setLayoutParams(new TableRow.LayoutParams( TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT)); tableLayout.addView(tableRow); for(int i = 0; i < anzahl_Spieler; i++){ editTextSpieler[i] = new EditText(getActivity()); editTextSpieler[i].setLayoutParams(layoutparams); tableRow.addView(editTextSpieler[i]); editTextSpieler[i].getLayoutParams().width = dWidth/(anzahl_Spieler + 1); editTextSpieler[i].setHint("Name"); } }
解决方案
问题的核心在于你给EditText设置的布局参数类型不对——子控件要适配TableRow的布局规则,必须使用TableRow.LayoutParams来定义布局属性。修改你的layoutparams初始化代码即可:
layoutparams = new TableRow.LayoutParams( TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT);
这样设置后,每个EditText就能正确继承TableRow的布局逻辑,顺利显示在同一行中了。
内容的提问来源于stack exchange,提问作者user8553212
相关产品推荐
相关产品推荐

