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」キー〜灰色で触れられないようにします。ここにはいくつかの同様の質問がありますが、すべてデフォルトのソフト KB に関するものです。

私はこのようなキーを反復できることを知っています

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

しかし、 Keyboard.Keyクラスのオブジェクトは、キーの外観の変更には役に立たないように見えます。

UPD : 解決策が見つかりませんでした。私は手動でキーボードを実装しました - 大きな相対レイアウト、共通ボタン、カスタムボタン、そしてすべてがうまくいきました。ところで - 少なくともより美しいカスタム キーボード。Droid 4+ からリソースをコピーするだけで、すべてのプラットフォームでモダンな透明なボタンと透明なレイアウトが得られます。

4

3 に答える 3

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.setEnabled(false);

それ以外の場合は、クリックできないようにします。

key.setClickable(false);

...そしてその外観(背景色、テキストの色など)を変更します。これを行う最も簡単な方法は次のとおりです。

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