Back to project page AdoreLib.
The source code is released under:
MIT License
If you think the Android project AdoreLib listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package com.ylinval.adore.adorelib.AndroidViews; //w ww . j ava 2 s.c om import android.content.Context; import android.graphics.Canvas; import android.text.TextPaint; import android.util.AttributeSet; import android.view.Gravity; import android.widget.TextView; /** * Created by jdourlens on 5/17/14. */ //Credits go to http://blog.stylingandroid.com/archives/796 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(); } }