显示或设置文本对角线方式到textview

时间:2014-07-03 17:08:59

标签: android

是否可以以对角线方式显示文本,如果是,那么我们如何实施,请帮助我感谢。 我添加了图片,我必须将WORLD文本替换为其他文本。

enter image description here

4 个答案:

答案 0 :(得分:1)

请看这里:How to Rotate TextView 90 Degrees and display

最简单的方法是:

  1. 使用您的背景图片创建TextView
  2. 在上面的链接中完成TextView

答案 1 :(得分:1)

如果您使用的是API 11或更高版本,则可以尝试:

TextView tv = (TextView) findViewById(R.id.txtview);
String txt = "Stackoverflow";         
tv.setText(txt);
tv.setRotation(45); // 45 degree rotation

试试这个..

答案 2 :(得分:0)

在XML中使用android:rotation

textView.setRotation(角)

http://developer.android.com/reference/android/view/View.html#attr_android:rotation

答案 3 :(得分:-1)

我已经使用自定义textview实现了感谢您的宝贵回复。在4.0设备上正常工作需要在2.2设备上进行测试。

    public class DiagonalTextView extends TextView{
   final boolean topDown;

   public DiagonalTextView(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 boolean setFrame(int l, int t, int r, int b){
      return super.setFrame(l, t, l+(b-t), t+(r-l));
   }

   @Override
   public void draw(Canvas canvas){
      if(topDown){
         canvas.translate(getHeight(), 0);
         canvas.rotate(45);
      }else {
         canvas.translate(0, getWidth());
         canvas.rotate(-45);
      }
      canvas.clipRect(0, 0, getWidth(), getHeight(), android.graphics.Region.Op.REPLACE);
      super.draw(canvas);
   }
}