¿Es posible especificar la altura de TableRow?

Tengo un TableLayout con varias vistas de TableRow dentro de ella. Deseo especificar la altura de la fila programáticamente. P.ej

 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); 

Pero esto no funciona y está predeterminado en WRAP_CONTENT. Buscando en el código fuente de Android , veo esto en TableLayout (desencadenado por el método 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; 

Parece que cualquier intento de establecer la altura de la fila será anulado por el TableLayout. Alguien sabe una forma de evitar esto?

    2 Solutions collect form web for “¿Es posible especificar la altura de TableRow?”

    OK, creo que ahora tengo la caída de esto. La forma de establecer la altura de la fila no es TableLayout.LayoutParams con el TableLayout.LayoutParams adjunto a la TableRow , pero el TableRow.LayoutParams adjunta a cualquiera de las celdas. Simplemente haga una celda de la altura deseada y (suponiendo que es la celda más alta) toda la fila será esa altura. En mi caso, he añadido una columna extra de 1 píxel de ancho a la altura deseada que hizo el truco:

     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)); 

    En primer lugar, debe convertirlo de dps a píxeles utilizando la fórmula de factor de visualización.

      final float scale = getContext().getResources().getDisplayMetrics().density; int trHeight = (int) (30 * scale + 0.5f); int trWidth = (int) (67 * scale + 0.5f); ViewGroup.LayoutParams layoutpParams = new ViewGroup.LayoutParams(trWidth, trHeight); tableRow.setLayoutParams(layoutpParams); 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.