2011-01-26 112 views

回答

4

我找到了答案:實現的onDraw ...

@Override 
public void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 
    try{ 
    onBufferDraw(); 
    }catch(Exception ex){ 

    } 
    if (mBuffer!=null) 
     canvas.drawBitmap(mBuffer, 0, 0, null); 
} 
+0

難道還有更好的辦法嗎?這種方法看起來工作太多,涉及到修改很多私有變量/方法,這些變量在未來的Android版本中可能很容易中斷。不如通過「keyIcon」使用圖像的路線,因爲它看起來更清潔嗎? –

+0

@paul_sns我希望有更好的方法,但現在我習慣了。新版本中我沒有看到太多變化。 – Heidar

+0

您能否擴展答案?我很不明白onDraw如何幫助改變字體。 – Raykud

1

那麼這是一個非常廣泛的問題。我可以告訴你如何設置不同的字體;你的鍵盤應用程序如何工作取決於你。

放置一個字體(.ttf或.otf)的到您的資產文件夾,使用下面的代碼(假設一個名爲「myfont.ttf」字體和一個TextView用的「鑰匙」的ID):

Typeface myFont = Typeface.createFromAsset(getAssets(), "myfont.ttf"); 
TextView key = (TextView)findViewById(R.id.key); 
key.setTypeface(myFont); 

提醒:不要忘記檢查您使用的字體的許可證。大多數不允許沒有補償的重新分配。一種可以使用的免費許可字體是Bitstream Vera Sans。

+0

謝謝你的迴應,但我正在改變SoftKeyboard示例,並且我沒有任何TextView來爲它設置字體。我只有一個InputMethodService,一個鍵盤,一個鍵和一個KeyboardView。 – Heidar

+0

有趣。是的,更多地看着它,我不*看到*一種方式來修改它。但是,像SwiftKey這樣的應用程序對於它們的鍵有不同的字體,所以這是可能的。不幸的是,我沒有更好的答案給你。 – kcoppock

+0

一個解決方案是爲每個鍵放置一個圖像,但這很耗時。無論如何,謝謝你,請告訴我,如果你發現任何東西。 – Heidar

4

一種解決方案是使用keboardView.java,而不是android.inputmethodservice.KeyboardView

您還需要將paint.setTypeface(Typeface.DEFAULT_BOLD)更改爲paint.setTypeface(my font),並且您必須將attrs.xml添加到您的項目中。

+0

感謝您的幫助 – Heidar

+0

我如何添加attrs.xml – Fay007

相關問題