如何在android布局中旋转标题?

时间:2014-07-26 17:05:38

标签: android android-layout layout android-canvas

我想在android中创建一个旋转的X度标题。

类似的东西:

enter image description here

我试过这门课

public class AngledTextView extends Button {
    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(-45, this.getWidth() / 2, this.getHeight() / 2);
        // Draw it
        super.onDraw(canvas);
        // Restore to the previous matrix
        canvas.restore();
    }
}

在这个布局中:

但得到了切碎的文字。

enter image description here

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

不是在中心旋转画布,而是在左下方旋转它,并将其从左下角向右上角旋转角度数。

float angle = Math.tan((float)this.getHeight() / (float)this.getWidth());

// Rotate this View at its center
canvas.rotate(angle, 0, this.getHeight());

答案 1 :(得分:0)

根据this question,Android本身无法实现此功能。但是,由于第二个答案的最后一个注释表明您可以通过覆盖draw()方法(而不是像您所做的那样onDraw())来旋转视图,并在特定区域触摸屏幕时将事件转发到按钮。所以你必须自己处理事件(因为按钮不能旋转)然后它可以工作。请注意,在另一个问题及其答案中提供的示例中,TextView已扩展,而不是Button。

答案 2 :(得分:0)

你可以使用view.setRotation(rotationAngle)或checkout在android中的RotateAnimation