gpt4 book ai didi

Android 自定义 KeyBoardView 清除默认键

转载 作者:太空狗 更新时间:2023-10-29 15:10:15 27 4
gpt4 key购买 nike

我有自定义的 MyKBV 类,它扩展了 KeyBoardView。我创建了这个自定义 View 来为键使用自定义字体。我能够在键上看到更改的字体,但问题是每个键都与 XML 中的默认键重叠,我认为它是 TypefaceE.DEFAULT_BOLD。所以我看到的是每个键上有两个字符串,一个粗体,一个带有我想要的字体。如何清除默认键,以便只有自定义键可见。我在这上面花了很多时间。如果有人能指出我哪里出错了或者我能指出什么,那将会很有帮助做。谢谢!!

public class MyKBV extends KeyboardView {
Context context;

@Override
public void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
Paint paint = new Paint();
Typeface font = Typeface.createFromAsset(context.getAssets(),
"fonts/Hippie.otf");
paint.setTypeface(font);
paint.setTextSize(40);

List<Key> listKeys = getKeyboard().getKeys();

for (Key key : listKeys) {
if (key.label != null) {
if (key.label.toString().length() > 1) {
paint.setTextSize(30);
canvas.drawText(key.label.toString(), key.x
+ (key.width / 2) - 15, key.y + (key.height / 2)
+ 10, paint);
} else {
canvas.drawText(key.label.toString(), key.x
+ (key.width / 2) - 10, key.y + (key.height / 2)
+ 10, paint);
}
}
}

}

public MyKeyBoardView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
this.context = context;

}

}

最佳答案

如果您覆盖 onDraw(),您应该先绘制背景,然后再绘制文本。

public class MyKeyboardView extends android.inputmethodservice.KeyboardView {

Context context;
public MyKeyboardView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
this.context = context ;
}



@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);

Paint paint = new Paint();
Typeface font = Typeface.createFromAsset(context.getAssets(),
"fonts/Hippie.otf");
paint.setTypeface(font);
paint.setTextSize(40);




List<Key> keys = getKeyboard().getKeys();
for(Key key: keys) {

if(key.pressed){
NinePatchDrawable npd = (NinePatchDrawable)context.getResources().getDrawable(R.drawable.glow);
npd.setBounds(key.x,key.y,key.x+key.width,key.y+key.height);
npd.draw(canvas);
if(key.label != null)
canvas.drawText(key.label.toString(), key.x + (key.width/2), key.y + 25, paint);
}else if(key.modifier){ // boolean that defines key is function key

NinePatchDrawable npd = (NinePatchDrawable)context.getResources().getDrawable(R.drawable.btn_keyboard_special);
npd.setBounds(key.x,key.y,key.x+key.width,key.y+key.height);
npd.draw(canvas);
if(key.label != null)
canvas.drawText(key.label.toString(), key.x + (key.width/2), key.y + 25, paint);
}


break;
}
}

关于Android 自定义 KeyBoardView 清除默认键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17411882/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com