滚动时,带有镜像画布的自定义TextView会修剪文本

时间:2016-05-11 17:21:29

标签: java android textview android-canvas

我有一个自定义的TextView,覆盖了onDraw(),我在其中镜像文本:

@Override
protected void onDraw(Canvas canvas) {
    int cx = this.getMeasuredWidth() / 2;
    int cy = this.getMeasuredHeight() / 2;
    canvas.save();
        if(mirrored)
        {
            canvas.scale(1f, -1f, cx, cy);
        }
    super.onDraw(canvas);
    canvas.restore();
}

现在我想在我的活动中使用可重复的.scrollBy(0,-1)方法垂直滚动这个镜像画布。 但是,当我滚动文本时,它会从顶部剪裁: scroll1 scroll2

可能在TextView方法中发生了一些事情:bringPointIntoView(int offset)或bringTextIntoView()。

是否可以快速解决此问题?

提前致谢!

1 个答案:

答案 0 :(得分:0)

因此,对于任何感兴趣的人,我通过setRotation(180)修复了文本视图,然后通过X轴镜像画布。然后我的onDraw方法就像这样:

    @Override
protected void onDraw(Canvas canvas) {
    int cx = this.getMeasuredWidth() / 2;
    int cy = this.getMeasuredHeight() /2;
    canvas.save();
        if(mirrored)
        {
            canvas.scale(-1f, 1f, cx, cy);
            setRotation(180);
        }
    else
        {
            setRotation(0);
        }
    super.onDraw(canvas);
    canvas.restore();
}

这样,scrollBy方法适用于任何一个方向。