2011-12-05 88 views
4

我試圖做一個應用程序,只是輸出一堆文本到android屏幕,問題是它必須被鏡像(將被視爲一個「hud」)。textview中的鏡像文本?

令人驚訝的是,在android 4.0中,你可以通過textview.setScaleX(-1)...在4.0之前做到這一點,我無法找到很多。 textview.setTextScaleX(-1)不起作用(實際上它有點作用,但只有一個字符出現,儘管它是鏡像的)。 4.0方法也適用於我的手機(運行cm9的nexus)。

我經歷了一些建議迷迷糊糊的,如使用AndroidCharacter.Mirror(),但沒有成功,似乎IM左側帶有3個選項:

1)編寫一個定製的(鏡像)字體 2)學習如何覆蓋onDraw(根據Android TextView mirroring (hud)?) 3)將其全部繪製到畫布上。

第一個是合理的,我可以做到這一點,但它限制了我單一的語言(或很多工作)。第二個+第三個Im相當迷失,雖然我很確定我可以從我發現的幾個例子中找出它(例如:Drawing mirror text on canvas)。

在我嘗試2或3之前,有沒有其他的選擇我可能沒有考慮?

+0

另一種選擇是使用純文本:http://stackoverflow.com/questions/3433641/翻轉 - 反轉 - 鏡像 - 文本 - 使用css-only#評論50275863_3433641 – Pacerier

回答

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" /> 
+0

謝謝你,我正在嘗試類似的東西,但我打電話super.onDraw()第一,雖然它看起來像我做了一些其他錯誤也是如此! – Takigama

+0

它可以與預註冊一起使用!至少在模擬器中。 – MrSnowflake

+0

顯然它確實爲2.2工作。 – MrSnowflake