2012-09-02 20 views
8

Tengo un problema al usar GridLayout usando la compatibilidad de la biblioteca (no intenté sin). Estoy usando app:layout_gravity="fill_horizontal" en lugar de android:layout_gravity="fill_horizontal" pero no se muestra todo el contenido dentro de TextView. Para mostrar todo, tengo que establecer el alto del TextView "Título" pero quiero una altura dinámica, no una altura establecida.Altura dinámica de TextView dentro de un GridLayout

¿Alguna idea?

Respuesta

27

Tienes que configurar layout_width="0dp" y layout_gravity="fill_horizontal" para TextView.

<TextView 
android:layout_width="0dp" 
app:layout_gravity="fill_horizontal" /> 

Por favor, véase el ejemplo completo aquí: https://groups.google.com/d/msg/android-developers/OmH3VBwesOQ/ZOGR0SGvC3cJ o aquí: http://daniel-codes.blogspot.com/2012/01/gridlayout-view-clipping-issues.html

+0

Es importante tener en cuenta la ** aplicación: ** layout_gravity. Estaba estableciendo el valor en un estilo y no me advirtió, me llevó un tiempo descubrir el problema. – basilisk

+0

Toma el ancho del ancho de la fila anterior si está situado en la 2da fila –

17

Usando el interior TextViewGridLayout es problemático, pero hay es una buena manera de utilizar los dos juntos.

Esto es lo que el ejemplo de diseño se parece a:

TextView inside GridLayout

Y este es el xml diseño completo, las líneas importantes están marcados con ***.

<?xml version="1.0" encoding="utf-8"?> 
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:columnCount="3"    * this example uses 3 columns 
    android:orientation="horizontal" > *** use "horizontal" 

<TextView        * just a normal view 
    android:layout_column="0" 
    android:layout_row="0" 
    android:background="#666666" 
    android:text="A" 
    android:textColor="#afafaf" 
    android:textSize="60sp" 
    android:textStyle="bold" /> 

<TextView        * this text will not be cut! 
    android:layout_width="0dp"   *** important: set width to 0dp 
    android:layout_height="wrap_content" 
    android:layout_column="1" 
    android:layout_columnSpan="2"  * colspan does also work with this 
    android:layout_gravity="fill_horizontal|bottom"  *** set to "fill*"! 
    android:layout_row="0" 
    android:text="This view has 2 columns. Lorem ipsum dolor sit amet, consetetur sadipscing elitr." 
    android:textColor="#666666" /> 

</GridLayout> 

Dependiendo de sus necesidades, esta combinación también funcionará:

android:layout_width="0dp" 
    android:layout_height="0dp" 
    android:layout_gravity="fill" 
    android:gravity="bottom" 

Tenga en cuenta que no tiene que utilizar cualquier espacio de nombres que no sea android para que esto funcione.

+0

Gracias, funciona. Pero tengo curiosidad ¿cómo descubriste ese truco? (0dp para 'layout_width' y propiedades de relleno para' layout_gravity') – Leo

+2

Excelente trabajo para descubrirlo. Me costó conseguir que mi TextView envolviera el texto correctamente dentro de mi GridLayout. Seguí todas las otras sugerencias y respuestas sobre muchos temas sobre este mismo tema, pero solo el tuyo funcionó. ¡Muchas gracias! :) –

Cuestiones relacionadas