2011-12-05 4 views
4

안드로이드 화면에 많은 텍스트를 출력하는 응용 프로그램을 만들려고 할 때 문제는 미러링되어야한다는 것입니다 ("허드 (hud)"로 간주 됨).텍스트 뷰에서 미러 된 텍스트?

놀랍게도, 안드로이드 4.0에서는 단순히 textview.setScaleX (-1)로 이동하여 textview로이 작업을 수행 할 수 있습니다. 4.0 이전에는별로 찾을 수 없었습니다. textview.setTextScaleX (-1) doesnt 작동 (실제로는 다소 효과가 있지만 미러링되었지만 하나의 char 만 나타납니다). 4.0 접근법은 또한 내 휴대폰에서 작동합니다 (nexus는 cm9를 실행 중입니다).

나는 그런 성공하지 AndroidCharacter.Mirror()를 사용하는 등, 몇 가지 제안을 우연히 발견했는데이 3 개 옵션 메신저 왼쪽을 보인다

1) 사용자 정의 쓰기 (미러링) 글꼴 2) 학습 onDraw를 재정의하는 방법 (Android TextView mirroring (hud)?) 3) 캔버스에 페인트하십시오.

그 첫 번째가 그럴듯하고 아마도 그렇게 할 수는 있지만 하나의 언어 (또는 많은 작업)로 제한됩니다. 두 번째 + 세 번째 임 꽤 잃어버린 Im 비록 내가 발견 한 몇 가지 예 (이 예 : Drawing mirror text on canvas)에서 알아낼 수 있습니다.

시도하기 전에 2 또는 3을 시도하기 전에 고려하지 않은 다른 옵션이 있습니까?

+0

:

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); } } 

그리고으로 사용 플립 - 반전 - 미러링 - 텍스트 -를 사용하여 CSS를 # comment50275863_3433641 – Pacerier

답변

7

메신저 4.0 이전 버전의 TextView에서는 불가능합니다.

미러 된 사용자 정의 텍스트 뷰는 어렵지 않다 : http://stackoverflow.com/questions/3433641/ : 또 다른 옵션은 일반 텍스트를 사용하는 것입니다

<your.pkg.MirroredTextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Hello World" /> 
+0

고마워, 나는 이것과 비슷한 것을 시도했지만, 나는 super.onDraw()를 먼저 호출했다. 오류도! – Takigama

+0

프리믹스와 호환됩니다! 에뮬레이터에서 최소한으로. – MrSnowflake

+0

분명히 2.2에서 작동합니다. – MrSnowflake

관련 문제