2011-01-26 10 views

Odpowiedz

4

znalazłem odpowiedź: wprowadzonego 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

Czy może istnieć lepszy sposób? Takie podejście wygląda na zbyt wiele pracy i wiąże się z modyfikowaniem wielu prywatnych vars/metod, które mogą łatwo zepsuć się w przyszłych wersjach Androida. Czy może pójść drogą korzystania z obrazów poprzez "keyIcon", ponieważ wydaje się, że jest to czystszy sposób? –

+0

@paul_sns Chciałbym mieć lepszy sposób, ale teraz jestem do tego przyzwyczajony. Nie widziałem zbyt wielu zmian w nowszych wersjach. – Heidar

+0

czy mógłbyś przedłużyć odpowiedź? Nie wiem, w jaki sposób onDraw pomoże zmienić czcionkę. – Raykud

1

Cóż, to bardzo szerokie pytanie. Mogę ci powiedzieć, jak ustawić inną czcionkę; jak to zrobić w aplikacji na klawiaturze, zależy od Ciebie.

Umieść czcionki (.ttf lub .OTF) do folderu swoje aktywa i użyć następującego kodu (zakładając czcionkę o nazwie „myfont.ttf” i TextView o identyfikatorze „klucz”):

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

Przypomnienie: nie zapomnij sprawdzić licencji na czcionkę, której używasz. Większość nie zezwala na redystrybucję bez odszkodowania. Jedna swobodnie licencjonowana czcionka, której możesz użyć, to Bitstream Vera Sans.

+0

Dziękuję za odpowiedź, ale zmieniam przykład SoftKeyboard i nie mam żadnego TextView, aby ustawić czcionkę. Mam tylko InputMethodService, klawiatura, klucz i widok klawiatury. – Heidar

+0

Interesujące. Tak, patrząc na to bardziej, nie * widzę * sposobu na modyfikację. Jednak aplikacje takie jak SwiftKey mają inny krój czcionki, więc jest to możliwe. Niestety nie mam dla ciebie lepszej odpowiedzi. – kcoppock

+0

Jednym rozwiązaniem jest umieszczenie obrazu dla każdego klawisza, ale jest to czasochłonne. Dziękuję ci i powiedz mi, jeśli coś znalazłeś. – Heidar

4

Jednym z rozwiązań jest użycie keboardView.java zamiast android.inputmethodservice.KeyboardView.

Należy również zmienić paint.setTypeface(Typeface.DEFAULT_BOLD) na paint.setTypeface(my font), a do projektu należy dodać attrs.xml.

+0

Dziękujemy za pomoc – Heidar

+0

jak dodać attrs.xml – Fay007