我试图做一个简单地将一堆文本输出到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之前,还有其他选择我可能没有考虑过吗?
答案 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" />