如何更改自定义键盘键';是java类的背景吗?
我正在开发一个android键盘,当按下一个特定的键时,我需要改变一个键的背景。我尝试在mykeyboard.java文件中执行此操作:如何更改自定义键盘键';是java类的背景吗?,java,android,xml,keyboard,custom-keyboard,Java,Android,Xml,Keyboard,Custom Keyboard,我正在开发一个android键盘,当按下一个特定的键时,我需要改变一个键的背景。我尝试在mykeyboard.java文件中执行此操作: private KeyboardView kv; (...) kv = (KeyboardView)getLayoutInflater().inflate(R.layout.keyboard, null); kv.setOnKeyboardActionListener(this); keyboard = new Keyboard(this, qwerty);
private KeyboardView kv;
(...)
kv = (KeyboardView)getLayoutInflater().inflate(R.layout.keyboard, null);
kv.setOnKeyboardActionListener(this);
keyboard = new Keyboard(this, qwerty);
kv.setKeyboard(keyboard);
kv.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
(...)
(v.findViewById(R.id.myKeyId)).setBackgroundColor(Color.BLUE);
}
}
<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
android:keyWidth="6.25%p"
android:horizontalGap="0px"
android:verticalGap="0px"
android:keyHeight="5%p">
<Row>
<Key> (...) android:id"@+id/myKeyId" (...) />
</Row>
</Keyboard>
但这种错误会发生:
java.lang.NullPointerException:
尝试在空对象引用上调用虚拟方法“void android.view.view.setBackgroundColor(int)”
在com.mtsolutions.mykeyboard.mykeyboard$1.onTouch(mykeyboard.java:87)
这是哪一行:
(v.findViewById(R.id.myKeyId)).setBackgroundColor(Color.BLUE);
这是res/layout/keyboard.xml代码:
<?xml version="1.0" encoding="UTF-8"?>
<android.inputmethodservice.KeyboardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/keyboard"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:keyPreviewHeight="0dp"/>
其中是res/xml/qwerty.xml文件中的一些代码:
private KeyboardView kv;
(...)
kv = (KeyboardView)getLayoutInflater().inflate(R.layout.keyboard, null);
kv.setOnKeyboardActionListener(this);
keyboard = new Keyboard(this, qwerty);
kv.setKeyboard(keyboard);
kv.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
(...)
(v.findViewById(R.id.myKeyId)).setBackgroundColor(Color.BLUE);
}
}
<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
android:keyWidth="6.25%p"
android:horizontalGap="0px"
android:verticalGap="0px"
android:keyHeight="5%p">
<Row>
<Key> (...) android:id"@+id/myKeyId" (...) />
</Row>
</Keyboard>
(…)android:id“@+id/myKeyId”(…)/>
我做错了什么
谢谢
kv.setBackgroundColor(Color.BLUE);
不要使用复杂的代码,而是这样做
不要使用复杂的代码,而是这样做