usar style studio example dynamically dinamico como 3x3 android layout width tablelayout

style - tablelayout android dinamico



Ancho de TableLayout de Android (6)

Tengo un TableLayout de dos columnas como único hijo de una vista de desplazamiento. La primera columna contiene TextViews (''etiquetas'') y la segunda columna contiene EditText / Spinner / DateWidget, etc. (''values''). Aunque he especificado Android: layout_width = "fill_parent" para TableLayout, TableRow y todos los widgets (en la columna ''valores'').

La pantalla se ve perfecta cuando se crea la actividad. Sin embargo, cuando se escribe un valor realmente largo en EditText, la columna ''valores'' va más allá del área de la pantalla visible.

¿Cómo abordo esto?

Gracias


Es posible que desee definir los tamaños de las columnas mediante el uso de un peso. Por lo tanto, debe definir la altura del diseño de la tabla para llenar el elemento principal, pero para cada columna debe establecer el ancho en "0px" y el peso en el porcentaje que desea que abarque la columna. Entonces, suponiendo que quiere que la primera columna tenga el 30% del ancho de la pantalla, configure su peso en "0.3" y la segunda columna en "0.7".

Pruébalo y ve si eso funciona.


Esto funcionó para mí ...

tableLayout.setColumnShrinkable(1,true);


Pruebe esto, asegúrese de que android:singleLine="false" y android:inputType="textMultiLine" :

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:stretchColumns="1"> <TableRow android:layout_height="wrap_content" android:layout_width="fill_parent"> <TextView android:text="Label:" /> <EditText android:id="@+id/entry" android:inputType="textMultiLine" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="false" /> </TableRow> </TableLayout>


Tuve un problema similar con EditText en Android 2.2. En mi caso, agregar propiedad android: maxWidth = "0sp" ayudó. Ahora el campo EditText se muestra como yo quería, por lo que sigue siendo del mismo tamaño que otros campos de EditText, pero adicionalmente no se cambia de tamaño cuando se ingresa texto largo.

Aquí está mi definición EditText:

<EditText android:id="@+id/extra_edit" android:padding="3dip" android:inputType="textImeMultiLine" android:maxWidth="0sp" android:layout_width="fill_parent" />


La forma pragmática de resolver esto es usar los stretchColumns y shrinkColumns en TableLayout . Sus valores deben ser índices de columnas basados ​​en 0.

Por ejemplo, si tiene un diseño de tabla de dos columnas y:

  • Desea que la segunda columna se llene de espacio vacío (stretch) para que TableLayout adapte a la vista primaria completa en un dispositivo de pantalla grande
  • Desea que la primera columna se reduzca (y su contenido posiblemente esté envuelto / ellipsizado) en un dispositivo de pantalla pequeña

usted definiría su TableLayout como:

<TableLayout android:id="@+id/my_table_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:stretchColumns="1" android:shrinkColumns="0" > </TableLayout>


<TableLayout android:layout_height="fill_parent" android:layout_width="fill_parent" android:layout_marginLeft="5dp" android:layout_marginRight="5dp"> <TableRow android:layout_height="fill_parent" android:layout_width="fill_parent"> <TextView android:layout_width="wrap_content" android:text="Name " android:layout_height="fill_parent"> </TextView> <EditText android:layout_width="0dp" android:layout_weight="1" android:hint="name" android:layout_height="wrap_content" > </EditText> </TableRow> </TableLayout>

Este código funcionó para mí para alinear la vista de texto en la primera columna y editar el padre de relleno de texto.