我已經添加了一個自定義的ActionView到我的動作欄,它的目的是讓用戶通過輸入一個數字來查找某些東西。然而,即使我指定了數字的imeType,用於佈局的EditText總是會顯示一個完整的字母數字鍵盤。我不想要一個字母數字鍵盤。哎呀,我甚至不想要+/-類型的選項。只有0-9而且是「完成」。如何讓我的EditText用於搜索使用自定義鍵盤?有沒有辦法做一個下拉式鍵盤?我希望爲該字段編寫自定義IME,但似乎不允許。Android:操作欄中可摺疊操作視圖的自定義鍵盤?
XML的菜單:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_keypad"
android:icon="@drawable/ms_btn_keypad_sel"
android:title="Keypad"
android:showAsAction="ifRoom|collapseActionView"
android:actionLayout="@layout/keypad_actionview"/>
</menu>
XML行動佈局:
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/keypad_actionview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textColor="@color/White"
android:drawableLeft="@drawable/icon_channel_keypad"
android:drawablePadding="5dp"
android:inputType="number"
android:imeOptions="flagNoExtractUi"
/>
Java進行設置操作欄菜單:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.number_menu, menu);
keypadMenuItem = menu.findItem(R.id.menu_keypad);
final EditText keypadText = (EditText) keypadMenuItem.getActionView();
keypadText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(final TextView textView, final int i, final KeyEvent keyEvent) {
keypadMenuItem.collapseActionView();
changeDisplayedNumber(Integer.valueOf(textView.getText().toString()), true);
textView.setText("");
return true;
}
});
keypadMenuItem.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
startAutoHidePlayerControlsRunner();
return true; // Return true to collapse action view
}
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
stopAutoHidePlayerControlsRunner();
keypadText.setText("");
keypadText.requestFocus();
/*keypadText.setInputType(InputType.TYPE_CLASS_NUMBER);
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
if (inputMethodManager != null) {
inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, 0);
}*/
return true; // Return true to expand action view
}
});
return true;
}
末的註釋掉的代碼的java是試圖強制鍵盤立即顯示,但是這導致了一些奇怪的行爲 - 非 - 數字鍵盤彈出。
發佈您正在使用的代碼你的'ExitText'(佈局文件以及你如何將它添加到操作欄中)。 – CommonsWare 2012-03-29 20:15:08
我已經添加了我的菜單XML,actionView的佈局,以及我的onCreateOptions的java。 – Calvin 2012-03-29 20:26:25
我修改了其中一個樣本,在操作欄中有一個'EditText',使用'inputType =「number」'(注意:我的不可摺疊)。在XOOM上,它工作正常。在Transformer Prime上,我得到了QWERTY鍵盤。在4.0.3模擬器上,它工作正常。那麼......你在測試什麼? – CommonsWare 2012-03-29 20:41:08