Set Ancho dinámicamente de textview

En mi proyecto, necesito dibujar filas de textview dinámicamente según los datos recibidos para demostrarlo. Para alinearlos correctamente, he utilizado Table Row n xml, y lo he llamado en código java. Ahora, en su LayoutParam he dado MATCH_PARENT, pero envuelve el texto de acuerdo a la longitud de los datos recibidos. Ahora, quiero fijar el ancho de los campos para una vista tabular. Hago todo este proceso en el método postExecute. En este método, he utilizado la función setWidth para establecerlo de acuerdo con el ancho del elemento de la fila de encabezado.Aquí, Sno es una vista, mientras que el tamaño es matriz que contiene el ancho de todos los elementos de headerRow.

Sno.setTag(patient); Sno.setWidth(size[0]); 

Pero no resolvió este problema, cuando intenté getWidth para ver su anchura, él estaba mostrando su valor 0. Entonces intenté fijar este ancho usando LinearLayout.LinearParams

 LinearLayout.LayoutParams params_sno = new LinearLayout.LayoutParams(size[0], LinearLayout.LayoutParams.MATCH_PARENT); Sno.setLayoutParams(params_sno); 

Pero aún no hay beneficio, secondaly, si quito MATCH_PARENT de ancho de LayoutParams, su anchura se incrementó de ancho de elemento de fila de encabezado. Campos sin datos son invisibles.

Prueba esto

 TableRow row = new TableRow(activityContext); TableLayout.LayoutParams td_tr = new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); row.setWeightSum(10); row.setLayoutParams(td_tr); row.setGravity(Gravity.CENTER); row.setBackgroundColor(Color.parseColor("#D2D2D2")); TextView tv= new TextView(activityContext); tv.setText(String.valueOf(i)); tv.setTextAppearance(activityContext, style.tvBoldRow); tv.setLayoutParams(new TableRow.LayoutParams(0 , LayoutParams.WRAP_CONTENT, 1)); // Here you can set weight to your TextView. tv.setPadding(2, 2, 2, 2); tv.setGravity(Gravity.CENTER); row.addView(tv); 

prueba esto:

  LinearLayout.LayoutParams Params1 = new LinearLayout.LayoutParams(15,50); tv.setLayoutParams(Params1); 

Agregue el siguiente parámetro

android:weight = "1"

En xml a la vista de texto y el conjunto

android:layout_width = "0dp" .

Creo que esto debería funcionar para usted.

Sí, puedes establecer el peso del código java.

Para establecer el peso del código java:

 LinearLayout.LayoutParams param = new LinearLayout.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 1.0f); 

El último parámetro es el peso.

Como tsp dijo

 LinearLayout.LayoutParams Params1 = new LinearLayout.LayoutParams(15,50); 

Entonces mientras que la agrega en la disposición de la tabla usted ha substituido add methode que toma vistas y los params de la disposición.

También puede considerar TypedValue.applyDimention () para dar valores en DP

 LinearLayout.LayoutParams Params1 = new LinearLayout.LayoutParams(TaypedValue.applyDimension(TaypedValue.COMPLEX_UNIT_DIP, 15, objDeisplayMetrics),TaypedValue.applyDimension(TaypedValue.COMPLEX_UNIT_DIP, 50, objDeisplayMetrics)); 
  • Botones redondeados
  • Fragmento de Android La animación de transacción se bloquea si hace clic mientras la animación avanza
  • Cómo cambiar el tema de la aplicación de "Actividad en blanco" a "Flujo maestro / detallado"
  • Comportamiento diferente de la clase StringBuffer en Java y Android
  • Abra la aplicación para Android cuando la conexión a Internet esté activada, de lo contrario no mostrará ningún mensaje de conexión a Internet
  • Android: error de heap importando ShowcaseView como proyecto, ClassNotFound si como JAR, Fuera de memoria
  • Android Studio - Problema en build.gradle uncaught error de traducción ExecutionException OutOfMemory
  • ¿Cómo puedo generar un número aleatorio en un rango específico en Android?
  • Calcular la distancia de gestos en Android
  • Uso de Scala con Java en Android Studio
  • Kotlin: no se puede encontrar la clase de símbolo Fragment u otras clases de android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.