2012-10-11 84 views
1

我想設置我的TextView在-90度旋轉總的TextView意味着我哈弗顯示它這個樣子!我要在單線性佈局中顯示8個文本瀏覽。我能夠旋轉,但我只能看到一個textview.Please可以任何一個幫助我的例子。在-90度

enter image description here

在此先感謝。

public class AngledTextView extends TextView 
{ 

     public AngledTextView(Context context, AttributeSet attrs) 
     { 
      super(context, attrs); 
     } 

     @Override 
     protected void onDraw(Canvas canvas) 
     { // Save the current matrix 
     canvas.save(); 
     // Rotate this View at its center 
     canvas.rotate(270,this.getWidth()/2, this.getHeight() /2); 
     // Draw it 
     super.onDraw(canvas); 
     // Restore to the previous matrix 
     canvas.restore(); 
     } 
} 
+0

分享您的代碼 – Blackbelt

+0

你應該問之前在這裏進行搜索,有很多的問題已經回答[如何旋轉文本視圖(http://stackoverflow.com/問題/ 6813367/how-to-rotate-textview) | [如何旋轉文字90度(http://stackoverflow.com/questions/8959069/how-to-rotate-textview-90-degrees-and-display) | [旋轉標號](http://stackoverflow.com/questions/1258275/vertical-rotated-label-in-android) – sokie

+0

公共類AngledTextView延伸的TextView { \t公共AngledTextView(上下文範圍內,的AttributeSet ATTRS){ \t \t超級(上下文,attrs); \t} \t @覆蓋 \t保護無效的onDraw(帆布帆布){ \t \t //保存當前矩陣 \t \t canvas.save(); \t \t //將此視圖在其中心旋轉 \t \t canvas.rotate(270,this.getWidth()/ 2,this.getHeight()/ 2); \t \t //繪製它 \t \t super.onDraw(帆布); \t \t //恢復到以前的基質 \t \t canvas.restore(); \t} }我使用此代碼的textview。 – user484848

回答

7

垂直TextView我用下面的代碼,它工作完美。

public class VerticleTextView extends TextView { 

final boolean topDown; 
public VerticleTextView(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(); 
} 
} 
+0

我需要-90度,但它顯示90度。當我將其更改爲-90時,它不會顯示任何結果。 – user484848

+0

謝謝@ Sam.Janz我得到了我所期待的:) – user484848

+0

如果你真的覺得這有幫助,然後通過接受答案欣賞...... :) –

1

您應該使用270代替-90。這將完美地工作。

0

在API級別12

view.animate().rotationBy(90).start()