2011-01-26 16 views

risposta

4

ho trovato una risposta: Implementato 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

Potrebbe esserci un modo migliore? Questo approccio sembra troppo impegnativo e comporta la modifica di molti metodi/vars privati ​​che potrebbero facilmente rompersi nelle future versioni di Android. Potrebbe anche passare attraverso il percorso di utilizzo delle immagini attraverso "keyIcon" come sembra essere il modo più pulito? –

+0

@paul_sns Vorrei che ci fosse un modo migliore ma ora ci sono abituato. Non ho visto troppi cambiamenti nelle versioni più recenti. – Heidar

+0

potresti estendere la risposta per favore? Non capisco come l'onDraw possa aiutare a cambiare il font. – Raykud

1

Bene, questa è una domanda molto ampia. Posso dirti come impostare un diverso carattere tipografico; il modo in cui lo utilizzi nella tua applicazione per la tastiera dipende da te.

Posizionare un font (.ttf o .otf) nella cartella asset, e utilizzare il seguente codice (assumendo un carattere chiamato "myfont.ttf" e un TextView con un ID di "chiave"):

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

Promemoria: non dimenticare di controllare la licenza per il carattere che si sta utilizzando. La maggior parte non consente la ridistribuzione senza compensazione. Un font con licenza gratuita che puoi usare è Bitstream Vera Sans.

+0

Grazie per la risposta, ma sto cambiando l'esempio di SoftKeyboard e non ho alcun TextView per impostare il tipo di carattere. Ho solo un InputMethodService, una tastiera, una chiave e un KeyboardView. – Heidar

+0

Interessante. Sì, esaminandolo di più, io non * vedo * un modo per modificarlo. Tuttavia, app come SwiftKey hanno un carattere tipografico diverso per le loro chiavi, quindi è possibile. Purtroppo non ho una risposta migliore per te. – kcoppock

+0

Una soluzione consiste nel posizionare un'immagine per ogni chiave, ma richiede molto tempo. Grazie comunque e, per favore, dimmi se hai trovato qualcosa. – Heidar

4

Una soluzione è quella di utilizzare keboardView.java invece di android.inputmethodservice.KeyboardView.

È inoltre necessario modificare paint.setTypeface(Typeface.DEFAULT_BOLD) a paint.setTypeface(my font) ed è necessario aggiungere attrs.xml al progetto.

+0

Grazie per il tuo aiuto – Heidar

+0

come aggiungo attrs.xml – Fay007

Problemi correlati