2011-01-08 32 views
5

Buduję aplikację na Androida, na której muszę reprezentować dane w formacie tabelarycznym. Używam TableLayout; problemem jest to, że mam narysować obrócony ciąg jak w poniższym przykładzie surowego:Problem z układem z Androidem: obrócono TextView

alt text

Jak mogę utworzyć mój układ, aby móc pokazać „2011” obraca?

Z góry dziękuję i pozdrawiam! c.

Odpowiedz

7

Rozszerz klasę TextView i zastąp metodę onDraw.

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

} 
+0

Cool. Dziękuję Ci; ale ... jeśli obrócę TextView w komórce TableRow, muszę również stworzyć coś w rodzaju ROWSPAN, ponieważ w 2011 r. trzeba użyć 3 wierszy ... w jaki sposób mogę to zrobić? – Cris

+1

Rowspan nie jest możliwy AFAIK. Będziesz musiał umieścić ten obrócony widok i widoki obok niego w RelativeLayout lub innej grupie widoków. Spójrz na to pytanie: http://stackoverflow.com/questions/2189986/android-table-layout-rowspan – Cristian

+0

Dziękuję bardzo, Twój link na pewno mi pomoże! – Cris

0

Trochę za późno, ale może ktoś inny może tego potrzebować.

Możesz to zrobić, używając również układów xml. Jeśli chcesz mieć format "stołowy", polecam użyć GridLayout do swoich celów.

Tutaj możesz zdefiniować swój widok tekstowy i przypisać go do żądanego wiersza i kolumny. Użyj parametrów android:layout_column="..." i android:layout_row="...", aby powiedzieć TextView, w której kolumnie i wierszu powinien się pojawić.

Od wersji API11 można użyć atrybutu xml o nazwie android:rotation="..." do obracania obiektu TextView. Atrybut używa wartości pływającej, która reprezentuje kąt obrotu twojego TextView.

jeśli rozwija API14 i powyżej można użyć atrybutu android:layout_rowspan="..." do generowania rowspan w GridLayout

Na przykład mały kod:

<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>
Jest to mały zrzutu ekranu, jak wygląda układ: screenshot of the given layout example

Powiązane problemy