Зеркальный текст в textview? - PullRequest
       14

Зеркальный текст в textview?

4 голосов
/ 05 декабря 2011

Я пытаюсь сделать приложение, которое просто выводит кучу текста на экран андроида, проблема в том, что он должен быть зеркальным (будет рассматриваться как "hud").

Удивительно,в android 4.0 вы можете сделать это с textview, просто перейдя textview.setScaleX (-1) ... до 4.0 я не могу найти много.textview.setTextScaleX (-1) не работает (на самом деле это вроде работает, но появляется только один символ, хотя он и зеркальный).Подход 4.0 также работает на моем телефоне (Nexus S работает cm9).

Я наткнулся на несколько предложений, таких как использование AndroidCharacter.Mirror () безуспешно, и мне кажется, что у меня осталось 3 варианта:

1) Написать собственный (зеркальный) шрифт 2) узнать, как переопределить onDraw (согласно Зеркальное отображение Android TextView (hud)? ) 3) нарисовать все на холсте.

Первый вариант правдоподобен, и я, вероятно, мог бы это сделать, но он ограничивает меня одним языком (или большой работой).Второе + третье Я довольно растерялся, хотя я уверен, что смогу понять это из нескольких найденных примеров (например: Рисование зеркального текста на холсте ).

ДоЯ делаю попытку 2 или 3, есть ли другие варианты, которые я, возможно, не рассматривал?

1 Ответ

7 голосов
/ 05 декабря 2011

Я почти уверен, что это невозможно с TextView, выпущенным до версии 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" />
...