さて、あなたはこれを求めているような質問はほとんど見ていないかもしれません。 しかし、これらの質問/回答や、Googleのアンドロイドの入力方法ウェブページのほとんどすべてを読んでも、私はまだ悩んでいます。アンドロイド用のカスタムキーボードを作成する
最終的な目標は、カスタムキーボードを作成することです。もちろん、私の言語には特別な入力方法があります。
しかし、今回は、キーボードがポップアップしたときにカスタムビューを表示するだけです。私はqwerty.xmlファイルに基づいてデフォルトのレイアウトをポップすることができました。これはこのようなものです。
XML/qwerty.xml
<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
android:keyWidth="10%p"
android:horizontalGap="0px"
android:verticalGap="0px"
android:keyHeight="60dp"
>
<Row android:rowEdgeFlags="bottom">
<Key android:codes="999" android:keyLabel="Settings" android:keyWidth="20%" android:keyEdgeFlags="left"/>
<Key android:codes="44" android:keyLabel="," android:keyWidth="7%p" />
<Key android:codes="47" android:keyLabel="/" android:keyWidth="7%p" />
<Key android:codes="32" android:keyLabel="SPACE" android:keyWidth="30%p" android:isRepeatable="true"/>
<Key android:codes="-5" android:keyLabel="DEL" android:keyWidth="18%p" android:isRepeatable="true"/>
<Key android:codes="-4" android:keyLabel="DONE" android:keyWidth="18%p" android:keyEdgeFlags="right"/>
</Row>
そしてInputMethodServiceを拡張する私のクラスでは、私は、入力ビューを作成し、このコードを持っています。
private KeyboardView myKeyView;
private Keyboard keyboard;
@Override
public View onCreateInputView() {
myKeyView = (KeyboardView)getLayoutInflater().inflate(R.layout.keyboard, null);
keyboard = new Keyboard(this, R.xml.qwerty);
myKeyView.setKeyboard(keyboard);
myKeyView.setOnKeyboardActionListener(this);
return myKeyView;
}
そしてもちろん、私は私の元に私のカスタムビューを適用する上で問題があったので。 私はちょうど反対側にいくつかの努力をしました。 XMLでの設定キーを押すと、
<Key android:codes="999" android:keyLabel="Settings" android:keyWidth="20%" android:keyEdgeFlags="left"/>
はそれがSettingsActivity
@Override
public void onKey(int primaryCode, int[] keyCodes) {
if(primaryCode == 999) {
openSettings();
}
}
public void openSettings()
{
Intent intent = new Intent(this, WRKeySettings.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
を呼び出しますそれはここまでうまく動作しますが、私は、このビューの問題にしています。
私は、アンドロイドデベロッパといくつかの記事を読んで、キーボードビューを拡張してカスタムビューを作成でき、この方法では何とかonDraw()でキーを描くことができると考えています。しかし、私はこれをすることに非常に苦労しています。
どのような提案も喜ばれます。ありがとう。
質問を明確に理解するだけで、別のレイアウトをプログラムで作成したいですか?既存のものに変更を加えたいですか?別のアプリケーションで同じ「キーボード」を再利用したいですか?あなたはキーを "再描画"することができますが、それらは同じ機能を持つか、レイアウトにビューを追加してウィンドウを "やり直す"ことができます... – Bonatti