软键盘的键标签,用于更改键文本的文本大小和字体

Keylabel of Softkeyboard to change text size and font of keytext

我想自定义软键盘。我想更改键标签的键文本的文本大小和字体。尝试了很多方法,但键盘没有任何变化。

您可以实施 KeyboardView,然后您可以自定义键盘设计中的几乎所有内容。

要更改文本大小,您可以设置属性 android:keyTextSize

不幸的是,这不是更改 xml 中字体样式的方法,您需要通过编程方式从 KeyboardView 扩展 class。在这种情况下,我建议 :

public class MyKeyboardView extends KeyboardView {
@Override
public void onDraw(Canvas canvas) {
    Paint paint = new Paint();
    paint.setTextAlign(Paint.Align.CENTER);
    Typeface font = Typeface.createFromAsset(context.getAssets(),
        "fonts/Hippie.otf"); //Insert your font here.
    paint.setTypeface(font);

    List<Key> keys = getKeyboard().getKeys();
    for(Key key: keys) {
        if(key.label != null)
            canvas.drawText(key.label.toString(), key.x, key.y, paint);
        }
    }
}

另一种方法是更改​​应用的字体,例如 :

import java.lang.reflect.Field; 
import android.content.Context;
import android.graphics.Typeface;

public final class FontsOverride {

public static void setDefaultFont(Context context,
        String staticTypefaceFieldName, String fontAssetName) {
    final Typeface regular = Typeface.createFromAsset(context.getAssets(),
            fontAssetName);
    replaceFont(staticTypefaceFieldName, regular);
}

protected static void replaceFont(String staticTypefaceFieldName,
        final Typeface newTypeface) {
    try {
           final Field staticField = Typeface.class
                .getDeclaredField(staticTypefaceFieldName);
           staticField.setAccessible(true);
           staticField.set(null, newTypeface);
        } catch (NoSuchFieldException e) {
          e.printStackTrace();
        } catch (IllegalAccessException e) {
        e.printStackTrace();
    }
  }
}

在这里你可以看到另一个类似的问题:

最后,您可以像我所做的那样完全自定义 xml 布局 here