2013-06-12 16 views
19

Sto provando a creare qualcosa come il seguente.TextView verticale in Android

enter image description here

utilizzando LinearLayout e TableLayout. Ma mi sono bloccato sul testo verticale. Prende più spazio di quello che dovrebbe assumere dopo la rotazione.

fllowing è l'XML

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <TextView 
     android:id="@+id/tv_CONSEQUENCES" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:rotation="-90" 
     android:text="CONSEQUENCES" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <TableLayout 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" > 

     <TableRow 
      android:id="@+id/tableRow1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" > 

      <Button 
       android:id="@+id/button1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 

      <Button 
       android:id="@+id/button4" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 

      <Button 
       android:id="@+id/button3" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 

      <Button 
       android:id="@+id/button2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 

     </TableRow> 

     <TableRow 
      android:id="@+id/tableRow1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" > 

      <Button 
       android:id="@+id/button1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 

      <Button 
       android:id="@+id/button4" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 

      <Button 
       android:id="@+id/button3" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 

      <Button 
       android:id="@+id/button2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 

     </TableRow> 
     <TableRow 
      android:id="@+id/tableRow1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" > 

      <Button 
       android:id="@+id/button1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 

      <Button 
       android:id="@+id/button4" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 

      <Button 
       android:id="@+id/button3" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 

      <Button 
       android:id="@+id/button2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 

     </TableRow> 
     <TableRow 
      android:id="@+id/tableRow1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" > 

      <Button 
       android:id="@+id/button1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 

      <Button 
       android:id="@+id/button4" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 

      <Button 
       android:id="@+id/button3" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 

      <Button 
       android:id="@+id/button2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 

     </TableRow> 
    </TableLayout> 

</LinearLayout> 

e output come questo.

enter image description here

testo verticale prendere più spazio di quello che dovrebbe necessario. e anche l'intero testo non appare. :(

+1

Date un'occhiata a quel post http://stackoverflow.com/questions/2888780/is-it-possible-to-write-vertically- in-a-textview-in-android buona fortuna –

risposta

15

Si dovrebbe ottenere risposta alla vostra domanda dal link indicato qui sotto:

vertical text in textview

+2

Ci sono due accennati menzionati nell'articolo a cui si riferisce il collegamento. Il primo approccio, sebbene richieda un TextView personalizzato, è migliore nel senso che non lascia spazi vuoti sulla destra del TextView ruotato. – lalitm

1

si deve estendere TextView e sovrascrivere la sua onDraw

0

perché non mettere imbottitura? In modo che andrà al centro della vostra screen.just provarlo se vi piace

0

mettere tutto il testo visualizza in Layout lineare e prova a dare il peso del layout corretto per risolvere il tuo problema

-1

Se vuoi riprodurre la tua immagine, userei un GridView o un TableLayout senza pulsanti, basta impostare gli ascoltatori appropriati se devi fare qualsiasi azione In questo modo è possibile impostare altezze e larghezze fisse.

13

È possibile utilizzare il codice qui sotto:

android:rotation="270" 
+0

questo causa l'intero TextView incluso il suo sfondo da ruotare, questo potrebbe non essere desiderabile –

+0

Sì, quindi il modo migliore è verticale TextView personalizzato. Puoi usare questo esempio che ho cercato su google: http: //www.pocketmagic.net/2010/12/android-vertical-textview-custom-angle-text/ Spero di aiutarti :) – quangson91

+0

ci vuole ancora uno spazio in più – Prabs

0
 android:rotation="-90" 
     android:layout_gravity="center" 

lavorato per me.

3

Nessuna delle soluzioni lavorato per me, ma ho trovato questo post del blog da Mark Allison: https://blog.stylingandroid.com/verticaltext-part-1/

public class VerticalTextView extends TextView 
{ 
    final boolean topDown; 

    public VerticalTextView(Context context, 
     AttributeSet attrs) 
    { 
     super(context, attrs); 
     final int gravity = getGravity(); 
     if (Gravity.isVertical(gravity) 
      && (gravity & Gravity.VERTICAL_GRAVITY_MASK) 
      == Gravity.BOTTOM) 
     { 
      setGravity( 
       (gravity & Gravity.HORIZONTAL_GRAVITY_MASK) 
        | Gravity.TOP); 
      topDown = false; 
     } 
     else 
     { 
      topDown = true; 
     } 
    } 

    @Override 
    protected void onMeasure(int widthMeasureSpec, 
     int heightMeasureSpec) 
    { 
     super.onMeasure(heightMeasureSpec, 
      widthMeasureSpec); 
     setMeasuredDimension(getMeasuredHeight(), 
      getMeasuredWidth()); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) 
    { 
     TextPaint textPaint = getPaint(); 
     textPaint.setColor(getCurrentTextColor()); 
     textPaint.drawableState = getDrawableState(); 

     canvas.save(); 

     if (topDown) 
     { 
      canvas.translate(getWidth(), 0); 
      canvas.rotate(90); 
     } 
     else 
     { 
      canvas.translate(0, getHeight()); 
      canvas.rotate(-90); 
     } 

     canvas.translate(getCompoundPaddingLeft(), 
      getExtendedPaddingTop()); 

     getLayout().draw(canvas); 
     canvas.restore(); 
    } 
} 

La rotazione è fatto dalla gravità. Quindi, essere sicuri di impostare questo nel vostro xml:

<com.stylingandroid.verticaltext.VerticalTextView 
    style="@style/verticalTextStyle" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:gravity="bottom|right" 
    android:text="@string/text" /> 
+0

In caso la vista assomigli al cambiamento android: gravità = "in basso | a destra" per android: gravità = "fondo | centro" – Goodlife