Estoy tratando de crear dinámicamente TableRow
objetos y agregarlos a a TableLayout
. Los TableRow
objetos tienen 2 elementos, a TextView
y a CheckBox
. Los TextView
elementos deben tener su peso de diseño establecido en 1 para empujar los CheckBox
elementos hacia el extremo derecho.
No puedo encontrar documentación sobre cómo establecer mediante programación el peso del diseño de un TextView
elemento.
TextView tv = (TextView) findViewById(R.id.your_textview_inside_the_linearlayout); tv.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 0.1f));
TableRow.LayoutParams
debe usarse en lugar deTableLayout.LayoutParams
. Ver la respuesta de @ Dorje.La respuesta es que debe usar TableRow.LayoutParams, no LinearLayout.LayoutParams o cualquier otro LayoutParams.
Los diferentes LayoutParams no son intercambiables y si usa el incorrecto, entonces parece que no sucede nada. El padre de la vista de texto es una fila de la tabla, por lo tanto:
http://developer.android.com/reference/android/widget/TableRow.LayoutParams.html
fuente
LayoutParams
TableRow.LayoutParams
hizo el trabajo para mí tambiénEn las respuestas anteriores, el peso se pasa al constructor de un nuevo objeto SomeLayoutType.LayoutParams. Aún así, en muchos casos es más conveniente usar objetos existentes; ayuda a evitar tratar con parámetros que no nos interesan.
Un ejemplo:
fuente
1f se denota como peso = 1; puede dar 2f o 3f, las vistas se moverán según el espacio
fuente
simplemente configure los parámetros de diseño en ese diseño como
crear variable param
1f es variable de peso
configura tu widget o diseño como
fuente
LinearLayout.LayoutParams
constructor. El tercer parámetro es el peso. O documentación(O)
1f se refiere como peso = 1; según su necesidad, puede dar 2f o 3f, las vistas se moverán según el espacio. Para hacer una distancia especificada entre vistas en diseño lineal, utilice la suma de peso para "LinearLayout".
fuente
Esto debería funcionar para ti
fuente
También puedes dar peso por separado de esta manera,
fuente
Esto funciona para mí, y espero que también funcione para ti
Establezca primero los LayoutParams para la vista principal:
luego se establece para TextView (hijo):
fuente
Hay otra forma de hacer esto. En caso de que necesite establecer solo un parámetro, por ejemplo 'altura':
fuente
Después de luchar por 4 horas. Finalmente, este código funcionó para mí.
Hay 3 columnas en una fila.
fuente
Tuve bastante dificultad con una solución algo muy similar a esto: tratar de tener dos botones en una TableRow, cada uno con la mitad del ancho de la pantalla. Por alguna razón, el botón izquierdo siempre tendría aproximadamente el 70% del ancho y el botón derecho el 30%. Llamar a table_layout.setStretchAllColumns (true) no tuvo ningún efecto, ni configurar el ancho del botón a la mitad de la pantalla, ni configurar su peso de diseño.
La solución que terminó con la anidación fue un LinearLayout en los TableRows, que tenía tengan en cuenta el valor del ancho de los botones.
fuente
layout_width=fill_parent
, y después de hacerlo, configurarlayout_weight=1
ambos para button1 y button2. Todos los elementos con fill_parent y layout_weight = 1 recibirán un tamaño igual después de la inflación.