textview中的镜像文本?

时间:2011-12-05 05:24:03

标签: android textview mirror

我试图做一个简单地将一堆文本输出到android屏幕的应用程序,问题是它必须被镜像(将被视为“hud”)。

令人惊讶的是,在android 4.0中,你可以通过简单地使用textview.setScaleX(-1)...在4.0之前使用textview来做到这一点我找不到多少。 textview.setTextScaleX(-1)不起作用(实际上它有点工作,但只有一个char出现,虽然它是镜像的)。 4.0方法也适用于我的手机(nexus运行cm9)。

我偶然发现了一些建议,例如使用AndroidCharacter.Mirror()但没有成功,似乎我留下了3个选项:

1)编写自定义(镜像)字体 2)学习如何覆盖onDraw(根据Android TextView mirroring (hud)?) 3)将它们全部涂在画布上。

第一个是合理的,我可能会这样做,但它限制我使用单一语言(或许多工作)。第二个+第三个我很失落,虽然我很确定我可以从我发现的几个例子中找到它(例如:Drawing mirror text on canvas)。

在我尝试2或3之前,还有其他选择我可能没有考虑过吗?

1 个答案:

答案 0 :(得分:7)

我很确定使用4.0之前的TextView是不可能的。

镜像自定义TextView并不难:

package your.pkg;

import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.widget.TextView;

public class MirroredTextView extends TextView {

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

    @Override
    protected void onDraw(Canvas canvas) {
        canvas.translate(getWidth(), 0);
        canvas.scale(-1, 1);
        super.onDraw(canvas);
    }

}

并用作:

<your.pkg.MirroredTextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World" />