У меня есть поле EditText в моем приложении:Kindle Кнопки пожарной клавиатуры
<EditText
android:id="@+id/task_buy_edit_mass_editText1"
android:minWidth="100dip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:imeOptions="actionDone" >
</EditText>
Проблема заключается в том, что на моем Kindle Fire, клавиатура, которая появляется, когда пользователь хочет редактировать EditText
не имеет кнопки Done, просто кнопка, которая скрывает экранную клавиатуру
Это не было бы проблемой, если бы я мог перехватить кнопку «скрыть клавиатуру», что я подсвечиваюсь на скриншоте выше. Тем не менее, похоже, что он не вызывает OnEditorActionListener
, который я подключил к EditText
, поэтому я немного застрял в том, что нужно сделать, кроме моей собственной кнопки «Готово» в моем фактическом макете, чтобы отвлечь внимание от EditText, скрыть клавиатуру и внести какие-либо изменения в результате изменения номера
Есть ли способ перехватить кнопку «скрыть клавиатуру» или есть альтернативное решение?
Кстати, у меня есть регулярное представление EditText в другом месте в моем приложении, которое не имеет imeOptions и не задает inputType и что действительно есть Возвращения ключа
Вот остальная часть коды для справки:
editText.setOnEditorActionListener(new OnEditorActionListener(){
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if(actionId==EditorInfo.IME_ACTION_DONE || actionId==EditorInfo.IME_ACTION_NEXT || actionId==EditorInfo.IME_NULL || event.getKeyCode()==KeyEvent.FLAG_EDITOR_ACTION || event.getKeyCode()==KeyEvent.KEYCODE_ENTER){
closeKeyboard(v, done_button);
return true;
}
return false;
}});
// set done button for keyboards without correct IME options
final EditText finalEditText = editText;
editText.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
done_button.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
closeKeyboard(finalEditText, v);
}});
done_button.setVisibility(View.VISIBLE);
return false;
}
});
,
private void closeKeyboard(TextView v, View buttonv){
demand.setAmount(Double.parseDouble((v.getText().toString()))); // update the game
// close keyboard
InputMethodManager inputManager = (InputMethodManager) v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(v.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
v.clearFocus();
buttonv.setVisibility(View.GONE);
}
StackOverflow предназначен для программирования вопросов, и вы не задали вопрос. IME не должны соблюдать 'android: imeOptions =" actionDone "', и поэтому, хотя вы можете видеть это в Огне, проблема более общая. – CommonsWare
Я знаю. Я ищу решение для Kindle Fire. Я отредактировал свой ответ, чтобы уточнить, что именно я задавал. –
Вы можете попробовать добавить андроид: inputType = "textMultiLine" и android: singleLine = "true" в EditText, однако я обнаружил, что это вызывает проблемы с новым желе Бобы. –