TextViewのミラー化されたテキスト?
質問
Android画面にテキストの束を単純に出力するアプリケーションを実行しようとしていますが、問題はミラーリングする必要があることです(「HUD」と見なされます)。
驚くべきことに、Android 4.0では、TextView.setscalex(-1)... 4.0の前に、TextViewを使用してTextViewでこれを行うことができます。 TextView.SettextScalex(-1)は機能しません(実際には機能しますが、ミラーリングされていますが、1つのcharのみが表示されます)。 4.0アプローチは、私の携帯電話でも動作します(Nexus s cm9)。
AndroidCharacter.mirror()を使用するなど、いくつかの提案に出くわしました。成功せずに、3つのオプションが残っているようです。
1)カスタム(ミラー化された)フォント2を書く2)オンドローをオーバーライドする方法を学ぶ( Android TextView Mirroring(HUD)?)3)すべてをキャンバスに塗ります。
1つ目はもっともらしいもので、おそらくそれを行うことができますが、それは私を単一の言語(または多くの作業)に制限します。 2番目 + 3番目の私は非常に失われましたが、私が見つけたいくつかの例からそれを理解できると確信しています(これは:例えば: キャンバスにミラーテキストを描画します).
2または3を試みる前に、私がおそらく考慮していない他のオプションはありますか?
解決
4.0以前の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" />
所属していません StackOverflow