gpt4 book ai didi

android - 是否可以指定 TableRow 高度?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:30:59 25 4
gpt4 key购买 nike

我有一个 TableLayout,里面有多个 TableRow View 。我希望以编程方式指定行的高度。例如

int rowHeight = calculateRowHeight();
TableLayout tableLayout = new TableLayout(activity);
TableRow tableRow = buildTableRow();
TableLayout.LayoutParams rowLp = new TableLayout.LayoutParams(
LayoutParams.FILL_PARENT, rowHeight);
tableLayout.addView(tableRow, rowLp);

但这不起作用并且默认为 WRAP_CONTENT。在 Android source code 中挖掘,我在 TableLayout 中看到了这一点(由 onMeasure() 方法触发):

private void findLargestCells(int widthMeasureSpec) {
final int count = getChildCount();
for (int i = 0; i < count; i++) {
final View child = getChildAt(i);
if (child instanceof TableRow) {
final TableRow row = (TableRow) child;
// forces the row's height
final ViewGroup.LayoutParams layoutParams = row.getLayoutParams();
layoutParams.height = LayoutParams.WRAP_CONTENT;

似乎任何设置行高的尝试都会被 TableLayout 覆盖。有人知道解决这个问题的方法吗?

最佳答案

好的,我想我现在已经掌握了窍门。设置行高的方法不是乱动TableRow附上的TableLayout.LayoutParams,而是附上TableRow.LayoutParams任何单元格。只需将一个单元格设置为所需的高度,并且(假设它是最高的单元格)整行都将是该高度。在我的例子中,我添加了一个额外的 1 像素宽的列设置为所需的高度,这起到了作用:

View spacerColumn = new View(activity);
//add the new column with a width of 1 pixel and the desired height
tableRow.addView(spacerColumn, new TableRow.LayoutParams(1, rowHeight));

关于android - 是否可以指定 TableRow 高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13445980/

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