2011-01-08 16 views
5

Tablo benzeri bir formatta verileri temsil etmem gereken bir Android uygulaması yapıyorum. Yani TableLayout kullanıyorum;Android ile Düzen sorunu: döndürülmüş TextView

alt text

Nasıl benim düzeni '2011' döndürülmüş göstermeye muktedir oluşturabilir: Sorun i şu ham örnekte olduğu gibi döndürülmüş dize çizmek zorunda olmasıdır?

Şimdiden teşekkürler ve selamlar! c.

cevap

7

TextView sınıfını genişletin ve onDraw yöntemini geçersiz kılın.

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

} 
+0

Cool. Teşekkür ederim; ama ... TextView'ı bir TableRow hücresinde döndürürsem de bir çeşit ROWSPAN yapmam gerekiyor çünkü 2011'de 3 satır kullanmak gerekiyor ... bunu nasıl yapabilirim? – Cris

+1

Rowspan mümkün değil AFAIK. Döndürülmüş görünümü ve sonraki görünümleri bir RelativeLayout veya başka bir görünüm grubunun içine koymanız gerekecektir. Bu soruya bir göz atın: http://stackoverflow.com/questions/2189986/android-table-layout-rowspan – Cristian

+0

Çok teşekkür ederim, bağlantınız kesinlikle bana yardımcı olacaktır! – Cris

0

Biraz geç ama belki başkasının buna ihtiyacı olabilir.

Bunu da xml düzenlerini kullanarak yapabilirsiniz. "Tablo benzeri" bir biçim istediğiniz gibi, amaçlarınız için bir GridLayout kullanmanızı öneririm.

Buradan, TextView'larınızı tanımlayabilir ve bunları istediğiniz satır ve sütuna atayabilirsiniz. TextView'a hangi sütunun ve satırın görünmesi gerektiğini bildirmek için android:layout_column="..." ve android:layout_row="..." parametrelerini kullanın.

API11'den itibaren, TextView'unuzu döndürmek için android:rotation="..." adlı xml niteliğini kullanabilirsiniz. Nitelik, TextView'unuzu döndürmek için açıyı temsil eden bir float değeri kullanır.

<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>
Bu küçük:

sen API14 için ve Örneğin GridLayout

biraz kod RowSpan üretmek için android:layout_rowspan="..." özelliğini kullanabilirsiniz yukarıda gelişmekte eğer ekran görüntüsü düzenin nasıl göründüğünü gösterir. screenshot of the given layout example