覆盖按钮以颠倒绘制文本

时间:2017-11-23 05:25:52

标签: android android-button ondraw

我怎样才能覆盖Button课程来翻译文本?当按钮本身旋转时,我正在使用的其他库的格式化,但我需要翻转文本。

我不熟悉onDraw方法,我不知道如何为此创建子类。

感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

您可以在按钮中使用旋转属性,如下所示:

<Button
    android:id="@+id/test_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="text button"
    android:rotation="180"/>

或者,如果您更喜欢使用自定义按钮,则可以创建如下内容:

public class FlippedTextButton extends Button {
    public FlippedTextButton(Context context) {
        super(context);
    }

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

    public FlippedTextButton(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        canvas.save();

        float y = this.getHeight() / 2.0f;
        float x = this.getWidth() / 2.0f;
        canvas.rotate(180, x, y);

        super.onDraw(canvas);
        canvas.restore();
    }
}

然后你可以用它:

<!-- Change to your class package name. -->
<com.example.flippedtext.FlippedTextButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Flipped text"/>

以下是github上的示例项目:https://github.com/isnotmenow/FlippedText