[英]Android: Custom keypad for a collapsible action view in an action bar?
我已經在操作欄中添加了自定義ActionView,它旨在允許用戶通過輸入數字來查找內容。 但是,即使我指定了imeType的數字,我用於布局的EditText總是顯示完整的字母數字鍵盤。 我不需要字母數字鍵盤。 哎呀,我什至都不想要+/-類型選項。 只需0-9即可完成。 如何使用自定義鍵盤讓EditText進行搜索? 有沒有辦法做一個下拉鍵盤? 我希望只為該字段編寫自定義IME,但看來這是不允許的。
菜單的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末尾注釋掉的代碼是試圖強制鍵盤立即顯示,但這引起了一些奇怪的行為-彈出非數字鍵盤。
我意識到這是華碩鍵盤的默認輸入問題
是的,《變形金剛》在這個問題上似乎有些破損。 話雖如此,請記住,沒有IME一定會尊重任何給定的inputType
。 例如,Graffiti IME都是基於筆的,因此可能沒有“數字”與“文本”的真實概念。 inputType
是請求,而不是合同。
我可以強制換成其他輸入法嗎
否。如果可能的話,這可能會帶來一些討厭的惡意軟件。
有什么巧妙的方法可以使actionView在操作欄中具有edittext,在下拉菜單/底部具有自定義鍵盤
歡迎您在EditText
取得焦點( setOnFocusChangeListener()
)之后進行控制,然后執行一些操作,例如使迄今為止已經消失的非活動自定義鍵盤可見,或者顯示您侵入數字鍵盤的ListPopupWindow
,或者...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.