TableLayout
에 TableRow
개의 복수 개의보기가 있습니다. 프로그래밍 방식으로 행의 높이를 지정하고 싶습니다. 예 :TableRow 높이를 지정할 수 있습니까?
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에 주위를 파고, I합니다 (된 onMeasure() 메소드에 의해 트리거) TableLayout
에서이 참조 :
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을 오버라이드 (override) 할 것이다 행 높이를 설정하려는 시도처럼 보인다. 누구든지이 문제를 해결할 방법을 알고 있습니까?
감사하지만, 위의 인용 코드의 마지막 줄 ('') (findLargestCells''참조) : 내 경우, 나는 속임수를 썼는지 원하는 높이에 추가로 1 개 픽셀 폭 열 집합을 추가 TableLayout 소스 코드는 내가 지정한 것에 관계없이 ViewGroup.LayoutParams의 높이를 WRAP_CONTENT로 다시 설정합니다. –