【问题标题】:How can I change a custom keyboard key's background from a java class?如何从 java 类更改自定义键盘键的背景?
【发布时间】:2017-02-19 09:21:38
【问题描述】:

我正在开发一个 android 键盘,我需要在按下特定键时更改键背景。我尝试在 mykeyboard.java 文件中这样做:

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);
        }
}

但是发生了这个错误:

᠎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 文件中的一些代码在哪里:

<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 android xml keyboard custom-keyboard


    【解决方案1】:
    kv.setBackgroundColor(Color.BLUE);
    

    不用复杂的代码,你自己做吧

    【讨论】:

      猜你喜欢
      • 2016-12-03
      • 1970-01-01
      • 2017-11-04
      • 1970-01-01
      • 2013-08-13
      • 2013-07-16
      • 2014-03-13
      • 1970-01-01
      • 2019-08-20
      相关资源
      最近更新 更多