我的Android应用中有自定义keyboard。它的布局在xml中描述如下
<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"">
<Row>
<Key android:keyLabel="F1" android:keyOutputText="F1"/>
<Key android:keyLabel="F2" android:keyOutputText="F2"/>
<Key android:keyLabel="F3" android:keyOutputText="F3"/>
...
所以,我很有兴趣如何禁用,例如'f1'键〜让它变灰和不可触碰。 这里有一些类似的问题,但都是关于默认的soft-KB。
我知道我可以迭代这样的键
for (Keyboard.Key key : myKeyboard.getKeys())
但看起来Keyboard.Key类的对象对于键的外观没有任何变化是无用的。
UPD :我没找到解决方案。我手动实现键盘 - 大相对布局,常用按钮和自定义按钮,一切都很好。顺便说一句 - 自定义键盘至少更美观。只需从droid 4+复制资源 - 您就可以在每个平台上获得漂亮的现代透明按钮和透明布局。
答案 0 :(得分:1)
我目前正在使用android:horizontalGap
在应该放置禁用键的位置放置黑色间隙(带有键的宽度)(这样,我可以隐藏每个屏幕中不允许的键,因为我的键盘总是有相同的分布)。不过,这是一个糟糕的解决方法。
主要问题是最右边的键,因为android:horizontalGap
只能设置为键的左侧。但是在最右边的假密钥中使用android:keyWidth="0"
属性,然后在那里设置正确的android:horizontalGap
,就可以了。一个更差的解决方法......
有更好的解决方案吗?
答案 1 :(得分:1)
通常键盘仅在您编辑某些内容时才可见,因此您可以通过该对象捕获编辑内容。如果它是一个editText框,那么您可以添加一个监听器,然后您可以禁用对编辑文本的任何响应。我不确定这对你有用,但至少你可以捕获任何不需要的输入。
// add a keylistener to keep track user input
editText.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
// if keydown and "enter" is pressed
if ((event.getAction() == KeyEvent.ACTION_DOWN)
&& (keyCode == KeyEvent.KEYCODE_ENTER)) {
// do some thing or nothing
return true;
}
return false;
}
});
答案 2 :(得分:-3)
如果Key是一个按钮,那么很简单:
key.setEnabled(false);
否则,只是让它不可点击:
key.setClickable(false);
...并改变其外观(背景颜色,文字颜色等)。最简单的方法是:
key.setBackgroundColor("0xFFAAAAAA");