gpt4 book ai didi

android - 如何在两列之间平均拆分 TableRow?

转载 作者:太空宇宙 更新时间:2023-11-03 11:29:43 27 4
gpt4 key购买 nike

我正在动态生成 TableRow。对于每个 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 列变得太小而难以阅读。

最佳答案

请注意 TableLayout扩展 LinearLayout(TableRow 也是如此)。这意味着 TableLayout 中的任何子项和 TableRow 中的任何子项都可以指定 android:layout_weight 属性以获得 Phoenixblade9 描述的行为.只需在 TextViewEditText 上设置 android:layout_weight="1",您将获得 50% 的拆分。

关于android - 如何在两列之间平均拆分 TableRow?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6417689/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com