2

我正在创建自定义键盘,text & icon of key在运行时进行更改,并且我已成功更改text of key但找不到任何方法来更改icon of key.

任何帮助,提示将是可观的。

更改密钥文本的代码是:

Keyboard currentKeyboard = CustomKeyboard.mInputView.getKeyboard();
List<Keyboard.Key> keys = currentKeyboard.getKeys();
CustomKeyboard.mInputView.invalidateKey(changeKey);
keys.get(changeKey).label = "Change Text";
4

2 回答 2

2

不要使用“.lable”属性。
它将采用 >lable 或 .icon (grrrr .... 真的很糟糕,但仍然很明显,请考虑图像上的顶部内容,因为这里的图标不是背景,而是它的顶部图像。)
相反,您必须使用:

android:keyIcon="@drawable/your_top_icon"  
android:text="your_text"(Text will not appear on key but you will get this value in listener.)  

现在场景也将发生变化:
现在将调用 onText() 方法而不是 onKey() 方法(序列将相同)
通过这种方式,您可以在运行时更改单个图标。

keys.get(changeKey).text = "Change Text";   
keys.get(changeKey).icon = Drawable;

-ve 点:
这意味着如果您的键盘中有 40 个(或 400 个)键,则必须使用 40 个不同的图像 :'(

您可以应用一些技巧,例如应用样式,但同样适用于鲸鱼布局,因为单个键样式不起作用。

我也在寻找另一种方法来为个人替换图像,如果找到任何东西让你知道。

于 2013-04-26T13:45:33.580 回答
0

在我在 Onkey 的路上:

case keycode:
    Keyboard currentKeyboard = mInputView.getKeyboard();
    List<Keyboard.Key> keys = currentKeyboard.getKeys();
    mInputView.invalidateKey(*keycode*);
    keys.get(*keycode*).label = null;
    key.get(*keycode*).icon = getResources().getDrawable(R.drawable.image);

keycode 是:xml 或 Keyboard.KEYCODE_ 上的键码...

于 2015-10-27T19:33:47.067 回答