【发布时间】:2011-06-21 13:02:55
【问题描述】:
我正在动态生成 TableRows。对于每个 TableRow,一列中有一个 TextView,另一列中有一个 EditText。如何生成行,使 TextView 占一半,而 EditText 占另一半?
这是我目前拥有的:
布局xml文件
<TableLayout android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:stretchColumns="*"
android:id="@+id/formTable" />
Java 源文件
private TreeMap<String, EditText> textData;
...
protected void onCreate(Bundle savedInstanceState) {
...
textData = populateMap();
...
TableLayout table = (TableLayout) findViewById(R.id.formTable);
configureTableLayout(table,textData);
}
private TreeMap<String, EditText> populateMap() {
TreeMap<String, EditText> map = new TreeMap<String, EditText>();
Set<String> dataTypeSet = app.getWorkingDataTypeList();
for (String dataTypeKey : dataTypeSet) {
EditText edit = new EditText(this);
edit.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
edit.setText("0");
edit.setHorizontallyScrolling(true);
map.put(dataTypeKey, edit);
}
return map;
}
private void configureTableLayout (TableLayout table,
Map<String, ? extends View> input) {
for (Map.Entry<String, ? extends View> entry : input.entrySet()) {
addTableRow(table, entry.getKey(), entry.getValue());
}
}
private void addTableRow(TableLayout table, String dataTypeKey, View v) {
TableRow row = new TableRow(this);
row.setLayoutParams(new TableRow.LayoutParams(
TableRow.LayoutParams.FILL_PARENT,
TableRow.LayoutParams.WRAP_CONTENT));
TextView textCol = new TextView(this); // left column
textCol.setText(app.getTypeNameForKey(dataTypeKey));
textCol.setLayoutParams(new TableRow.LayoutParams(
TableRow.LayoutParams.FILL_PARENT,
TableRow.LayoutParams.FILL_PARENT));
textCol.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
textCol.setHorizontallyScrolling(true);
// right column
TableRow.LayoutParams params = new TableRow.LayoutParams(
TableRow.LayoutParams.FILL_PARENT,
TableRow.LayoutParams.WRAP_CONTENT);
params.column = 1;
v.setLayoutParams(params);
row.addView(textCol);
row.addView(v);
table.addView(row);
}
我已经阅读了this post,但这并不是我想要的。我平均分割每一行的主要动机是,如果由app.getTypeNameForKey(dataTypeKey)(在addTableRow() 中找到)产生的字符串之一过长,可能会导致 EditText 列变得太小而无法阅读。
【问题讨论】:
标签: android