【问题标题】:Mirrored text in textview?textview中的镜像文本?
【发布时间】:2012-01-12 22:59:46
【问题描述】:

我正在尝试做一个简单地将一堆文本输出到 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 mirroring (hud)?) 3) 将其全部绘制到画布上。

第一个是合理的,我可能可以做到,但它限制了我使用一种语言(或大量工作)。第二个和第三个我很迷茫,尽管我很确定我可以从我找到的几个例子中弄清楚(例如:Drawing mirror text on canvas)。

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

【问题讨论】:

标签: android textview mirror


【解决方案1】:

我很确定使用 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" />

【讨论】:

  • 谢谢你,我正在尝试类似的事情,但我首先调用了 super.onDraw(),虽然看起来我也犯了一些其他错误!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-18
  • 2010-11-14
  • 1970-01-01
  • 2023-02-07
  • 2013-08-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多