2011-01-08 21 views
5

Estoy construyendo una aplicación de Android en la que tengo que representar los datos en un formato de tabla. Así que estoy usando TableLayout; el problema es que tengo que dibujar una cadena girado como en el siguiente ejemplo cruda:Problema de distribución con Android: rotó TextView

alt text

¿Cómo puedo crear mi diseño para poder mostrar la '2011' girar?

Gracias de antemano y saludos! c.

Respuesta

7

Extienda la clase TextView y anule el método onDraw.

@Override 
protected void onDraw(Canvas canvas) { 
    canvas.save(); 
    canvas.rotate(90, xPivot, yPivot); 
    super.onDraw(canvas); 
    canvas.restore(); 

} 
+0

Genial. Gracias; pero ... si giro el TextView en una celda TableRow también necesito hacer una especie de ROWSPAN porque el 2011 necesita usar 3 filas ... ¿cómo puedo hacer eso? – Cris

+1

Rowspan no es posible AFAIK. Deberá colocar esa vista girada y las vistas a su lado dentro de RelativeLayout u otro grupo de vista. Eche un vistazo a esta pregunta: http://stackoverflow.com/questions/2189986/android-table-layout-rowspan – Cristian

+0

¡Muchas gracias, su enlace seguramente me ayudará! – Cris

0

Un poco tarde, pero tal vez alguien más podría necesitar esto.

Usted puede hacer esto también usando xml-layouts. Como desea un formato "similar a una mesa", le recomiendo que use un GridLayout para sus propósitos.

Aquí puede definir sus TextViews y asignarlas a la fila y columna que desee. Use los parámetros android:layout_column="..." y android:layout_row="..." para indicar al TextView en qué columna y fila debería aparecer.

A partir de API11 puede usar el atributo xml llamado android:rotation="..." para rotar su TextView. El atributo usa un valor flotante que representa el ángulo para rotar su TextView.

El Si está desarrollando para API14 y arriba se puede utilizar el atributo android:layout_rowspan="..." para generar la rowspan en el GridLayout

Por ejemplo un poco de código:

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 
    android:layout_width="match_parent" 
 
    android:layout_height="match_parent"> 
 

 
    <!-- column 0 start --> 
 
    <TextView 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:layout_column="0" 
 
     android:layout_row="0" 
 
     android:text="ABC" /> 
 

 
    <TextView 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:layout_column="0" 
 
     android:layout_row="1" 
 
     android:layout_rowSpan="3" 
 
     android:rotation="-90.0" 
 
     android:layout_gravity="center_vertical" 
 
     android:text="2011" /> 
 

 
    <TextView 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:layout_column="0" 
 
     android:layout_row="4" 
 
     android:text="DEF" /> 
 
    <!-- column 0 end --> 
 
    
 
    <!-- column 1 start --> 
 
    <TextView 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:layout_column="1" 
 
     android:layout_row="0" 
 
     android:text="XXXXX" /> 
 

 
    <TextView 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:layout_column="1" 
 
     android:layout_row="1" 
 
     android:text="XXXXX" /> 
 

 
    <TextView 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:layout_column="1" 
 
     android:layout_row="2" 
 
     android:text="XXXXX" /> 
 

 
    <TextView 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:layout_column="1" 
 
     android:layout_row="3" 
 
     android:text="XXXXX" /> 
 

 
    <TextView 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:layout_column="1" 
 
     android:layout_row="4" 
 
     android:text="XXXXX" /> 
 
    <!-- column 1 end --> 
 
</GridLayout>
Esta es una pequeña captura de pantalla de cómo se ve el diseño screenshot of the given layout example