2012-12-12 16 views
3

我想爲android應用程序創建數學的特殊字符。
我想知道是否可以將一個字符疊加在另一個字符之上,或者如果對文本呈現的方式進行了很好的控制(以及如何執行此操作)。Android - 文本上可以疊加文本嗎?

+1

你能舉一些例子嗎? –

+0

@PratikSharma是的,很多例子中,我希望下標和上標在同一個水平起點上對齊。或者我想通過渲染一個圓圈和一顆星星來創建一個特殊的內部乘法符號。 – ilomambo

+0

請參閱我爲此發佈的解決方案。讓我知道你是否需要我的更多幫助。 –

回答

7

如果你需要一個一般方法來顯示數學方程,看看jqMath。我認爲你可以使用WebView來呈現它。

許多數學符號都有Unicode代碼點。具體來說,圓圈內的符號「+」的Unicode代碼點是U + 2295。如果字體支持它們,它們可以直接渲染。有關具有相應Unicode代碼點的一些數學符號的列表,請檢查this Wikipedia article

另請參閱this question以瞭解Java中使用MathML的資源。

+0

就在當場!我會學習thos來源,謝謝。好賺的賞金! – ilomambo

0

試試這個:

這種方式,您可以添加標文本:

TextView out_unit2 = (TextView) findViewById(R.id.out_unit2); 
out_unit2.setText((Html.fromHtml("meter<sup><small>2</small></sup>"))); 

下標文本:

TextView out_unit2 = (TextView) findViewById(R.id.out_unit2); 
out_unit2.setText((Html.fromHtml("meter<sub><small>2</small></sub>"))); 

您可以使用此儘可能多的添加到您的代碼。

希望它可以幫助你。

謝謝。

+0

我目前不在我的開發計算機。你能否在同一文本上給出上標和下標的例子,並且兩者是否對齊?另外,它如何解決覆蓋文本覆蓋文本的一般問題?我給出的例子只有2個,我需要一個通用的解決方案。 – ilomambo

+0

這並不回答一般問題,而是爲兩個特定情況提供了一種可能的替代方案。 –

0

它可能真的很亂,但你可以用FrameLayout和幾個TextViews來完成它。例如,XML爲 「0」 重疊於 「+」,上標 「+」 和下標 「 - 」:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="0" 
     android:textSize="@dimen/title_bar_font_size" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="+" 
     android:textSize="@dimen/title_bar_font_size" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="+" 
     android:textSize="12sp" 
     android:layout_marginLeft="12sp" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="-" 
     android:textSize="12sp" 
     android:layout_marginLeft="12sp" 
     android:layout_gravity="bottom" /> 
</FrameLayout> 

,導致:

Output

+0

這看起來很複雜。我無法想象必須在XML中定義每個數學synbol/glyph。此外,我需要它是動態的,因爲用戶將鍵入數學。它不是我必須顯示的靜態字符串。 – ilomambo

1

我會擴展View類,然後在onDraw方法中使用Canvas對象的drawText方法。這聽起來像你需要精確控制文字的繪製位置和擴展視圖會給你這樣的座標。看看Canvas.drawText,你可以根據你的需要使用x和y座標疊加文本。

+0

非常感謝您的意見。我正在考慮做類似的事情,但Dheeraj的回答給了我一個可以呈現Mathtml的庫,這是一個標準,而且解決方案比繪製自己更好(更容易)。所有我需要編寫的數學應該在Mathtml中有一個代碼。 – ilomambo