软键盘的键标签,用于更改键文本的文本大小和字体
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
我想自定义软键盘。我想更改键标签的键文本的文本大小和字体。尝试了很多方法,但键盘没有任何变化。
您可以实施 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