5

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

令人惊讶的是,在 android 4.0 中,您可以通过 textview.setScaleX(-1)... 在 4.0 之前使用 textview 来执行此操作,但我找不到太多。textview.setTextScaleX(-1) 不起作用(实际上它有点起作用,但只有一个字符出现,尽管它是镜像的)。4.0 方法也适用于我的手机(nexus 运行 cm9)。

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

1)编写自定义(镜像)字体 2)学习如何覆盖 onDraw(根据Android TextView 镜像(hud)?) 3)将其全部绘制到画布上。

第一个是合理的,我可能可以做到,但它限制了我使用一种语言(或大量工作)。第二个+第三个我很迷茫,尽管我很确定我可以从我找到的几个例子中弄清楚(例如:在画布上绘制镜像文本)。

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

4

1 回答 1

9

我很确定使用 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" />
于 2011-12-05T06:28:26.067 回答