11

我的 Android 应用程序中有自定义键盘。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”键~使它变灰且不可触摸。这里有一些类似的问题,但都是关于默认软知识库的。

我知道我可以遍历这样的键

for (Keyboard.Key key : myKeyboard.getKeys())

但它看起来像Keyboard.Key类的对象对于键外观的任何变化都是无用的。

UPD:我没有找到解决方案。我手动实现了键盘——大的相对布局、常用按钮和自定义按钮,一切都很好。顺便说一句 - 自定义键盘至少更漂亮。只需从 droid 4+ 复制资源 - 您将在每个平台上获得漂亮的现代透明按钮和透明布局。

4

3 回答 3

1

我目前正在使用android:horizontalGap在应该放置禁用键的位置放置一个黑色间隙(具有键的宽度)(这样,我可以隐藏每个屏幕中不允许的键,因为我的键盘始终具有相同的分布)。不过,这是一个糟糕的解决方法。

主要问题是最右边的键,因为android:horizontalGap只能为键的左侧设置。但是android:keyWidth="0"在最右边的假键中使用一个属性,然后在那里设置正确的android:horizontalGap,就可以了。一个更糟糕的解决方法......

有更好的解决方案吗?

于 2013-06-22T08:55:39.667 回答
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;
        }
    });
于 2016-05-11T18:57:11.997 回答
-3

如果 Key 是一个 Button,那么它很简单:

key.setEnabled(false);

否则,只需使其不可点击:

key.setClickable(false);

...并更改其外观(背景颜色、文本颜色等)。最简单的方法是:

key.setBackgroundColor("0xFFAAAAAA");
于 2012-10-12T13:01:49.767 回答