Android SDK Custom Keyboard, setting background and text colors: of a single key -
here code:
public class customkeyboardview extends keyboardview {
public customkeyboardview(context context, attributeset attrs) { super(context, attrs); } @override public void ondraw(canvas canvas) { super.ondraw(canvas); paint paintbackground = new paint(); paintbackground.settextalign(paint.align.center); paintbackground.settextsize(48); paintbackground.setcolor(color.yellow); list<key> keys = getkeyboard().getkeys(); for(key key: keys) { if(key.label != null && key.codes[0] == 110) canvas.drawrect(key.x, key.y, key.x+key.width, key.y+key.height, paintbackground); paintbackground.setcolor(color.white); canvas.drawtext(key.label.tostring(), key.x + (key.width / 2), key.y + (key.height / 2), paintbackground); } } }
the strange thing if comment out canvas drawrect or canvas drawtext, other 1 works fine, if leave them both in, error:
fatal exception: main process: com.alpha.alphaproto, pid: 6540 java.lang.nullpointerexception @ com.alpha.alphaproto.customkeyboardview.ondraw(customkeyboardview.java:48) @ android.view.view.draw(view.java:14465) @ android.view.view.getdisplaylist(view.java:13362) @ android.view.view.getdisplaylist(view.java:13404) @ android.view.view.draw(view.java:14182) @ android.view.viewgroup.drawchild(viewgroup.java:3103) @ android.view.viewgroup.dispatchdraw(viewgroup.java:2940) @ android.view.view.getdisplaylist(view.java:13357) @ android.view.view.getdisplaylist(view.java:13404) @ android.view.view.draw(view.java:14182) @ android.view.viewgroup.drawchild(viewgroup.java:3103) @ android.view.viewgroup.dispatchdraw(viewgroup.java:2940) @ android.view.view.draw(view.java:14468) @ android.widget.framelayout.draw(framelayout.java:472) @ android.view.view.getdisplaylist(view.java:13362) @ android.view.view.getdisplaylist(view.java:13404) @ android.view.view.draw(view.java:14182) @ android.view.viewgroup.drawchild(viewgroup.java:3103) @ android.view.viewgroup.dispatchdraw(viewgroup.java:2940) @ android.view.view.getdisplaylist(view.java:13357) @ android.view.view.getdisplaylist(view.java:13404) @ android.view.view.draw(view.java:14182) @ android.view.viewgroup.drawchild(viewgroup.java:3103) @ android.view.viewgroup.dispatchdraw(viewgroup.java:2940) @ android.view.view.draw(view.java:14468) @ android.widget.framelayout.draw(framelayout.java:472) @ com.android.internal.policy.impl.phonewindow$decorview.draw(phonewindow.java:2326) @ android.view.view.getdisplaylist(view.java:13362) @ android.view.view.getdisplaylist(view.java:13404) @ android.view.hardwarerenderer$glrenderer.builddisplaylist(hardwarerenderer.java:1570) @ android.view.hardwarerenderer$glrenderer.draw(hardwarerenderer.java:1449) @ android.view.viewrootimpl.draw(viewrootimpl.java:2377) @ android.view.viewrootimpl.performdraw(viewrootimpl.java:2249) @ android.view.viewrootimpl.performtraversals(viewrootimpl.java:1879) @ android.view.viewrootimpl.dotraversal(viewrootimpl.java:996) @ android.view.viewrootimpl$traversalrunnable.run(viewrootimpl.java:5600) @ android.view.choreographer$callbackrecord.run(choreographer.java:761) @ android.view.choreographer.docallbacks(choreographer.java:574) @ android.view.choreographer.doframe(choreographer.java:544) @ android.view.choreographer$framedisplayeventreceiver.run(choreographer.java:747) @ android.os.handler.handlecallback(handler.java:733) @ android.os.handler.dispatchmessage(handler.java:95) @ android.os.looper.loop(looper.java:136) @ android.app.activitythread.main(activitythread.java:5001) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:515) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:785) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:601) @ dalvik.system.nativestart.main(native method
i'm mystified. appreciated.
this modification. above code doesn't work in either case. here code either drawtext or drawrect work, not together:
paint paintbackground = new paint(); paintbackground.settextalign(paint.align.center); paintbackground.settextsize(48); paintbackground.setcolor(color.yellow); paint paint = new paint(); paint.settextalign(paint.align.center); paint.settextsize(48); paint.setcolor(color.black); list<key> keys = getkeyboard().getkeys(); for(key key: keys) { if(key.label != null && key.codes[0] == 110) //canvas.drawtext(key.label.tostring(), key.x + (key.width/2), key.y + 25, paint); canvas.drawrect(key.x, key.y, key.x+key.width, key.y+key.height, paintbackground); canvas.drawtext(key.label.tostring(), key.x + (key.width / 2), key.y + (key.height / 2), paint); }
Comments
Post a Comment