アクションバーにカスタムのActionViewを追加しました。これは、ユーザーが数字を入力して何かを見えるようにするためのものです。しかし、私がレイアウトのために使用したEditTextは、数字のimeTypeを指定しても、常に完全な英数字のキーボードを表示します。私は英数字のキーボードを望んでいません。ヘック、私は+/-タイプのオプションが欲しくない。ちょうど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
私はメニューXML、私のレイアウトはactionView、JavaはonCreateOptionsを追加しました。 – Calvin
私はアクションバーの 'EditText'を持っていて、' inputType = "number" '(注:私は折りたたむことができません)を使うサンプルを修正しました。 XOOMでは、正常に動作しました。トランスフォーマープライムでは、QWERTYキーボードを手に入れました。 4.0.3エミュレータでは、正しく動作しました。それで...あなたは何を試していますか? – CommonsWare