Problema de diseño con Android: TextView girado

Estoy creando una aplicación de Android en la que tengo que representar datos en un formato similar a una tabla.
Entonces estoy usando TableLayout. El problema es que tengo que dibujar una cadena rotada como en el siguiente ejemplo sin formato:

texto alternativo

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

preguntado el 08 de enero de 11 a las 22:01

2 Respuestas

Extender el TextView clase y anular la onDraw método.

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

} 

Respondido el 09 de enero de 11 a las 01:01

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

Rowspan no es posible AFAIK. Tendrá que poner esa vista rotada y las vistas junto a ella dentro de un RelativeLayout u otro grupo de vistas. Eche un vistazo a esta pregunta: stackoverflow.com/questions/2189986/… - Cristian

Muchas gracias, seguro que tu enlace me ayudará! - Cris

¿Funcionó esto para alguien? No puedo hacer que funcione. Estoy usando un archivo XML para la vista. Gracias - mAndroid

Un poco tarde, pero tal vez alguien más pueda necesitar esto.

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

Aquí puede definir sus TextViews y asignarlos a la fila y columna que desee. Usa los parámetros android:layout_column="..." y android:layout_row="..." para decirle a TextView en qué columna y fila debe aparecer.

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

Si está desarrollando para API14 y superior, puede utilizar el android:layout_rowspan="..." atributo para generar el espacio de filas en GridLayout

Por ejemplo, un pequeño 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 captura de pantalla del ejemplo de diseño dado

Respondido 10 ago 16, 17:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.