好吧,您可能會看到像詢問這樣的問題。 但是,閱讀所有這些問題/答案以及Google中幾乎所有的android inputmethod網頁,我仍然遇到麻煩。爲android創建自定義鍵盤
我最終的目標是創建一個自定義鍵盤。但是,當然,我的某些語言會有特殊的輸入方法。
但是這一次,我想要的只是在彈出鍵盤時顯示我的自定義視圖。我已經設法基於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);
}
它可以很好地直到這裏,但我在這個觀點的問題。
我認爲從閱讀android develpers和一些文章是,我可以擴展KeyboardView使我的自定義視圖,並在此方法中,我可能能夠用onDraw()以某種方式繪製鍵。但是我這麼做很麻煩。
任何建議都會很高興。謝謝。
爲了清楚地理解問題,您希望以編程方式創建另一個佈局?你想改變現有的嗎?你想在不同的應用程序上重複使用相同的「鍵盤」嗎?你可以「重新繪製」按鍵,但是它們可以具有相同的功能,或者可以將視圖添加到佈局中,並「重做」窗口以及...嘗試儘可能詳細地描述你想要完成的任務 – Bonatti