我的应用中有一个EditText字段:
<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
时出现的键盘没有完成按钮,只有一个隐藏软键盘的按钮
如果我能拦截上面屏幕截图中突出显示的“隐藏键盘”按钮,那就没问题了。但是,它似乎没有触发OnEditorActionListener
我附加到EditText
,所以除了在我的实际布局中拥有自己的'完成'按钮之外,我有点不知所措要将焦点从EditText中移开,隐藏键盘并进行由更改的数字引起的任何更改
有没有办法拦截'隐藏键盘'按钮,还是有其他替代解决方案?
顺便说一句,我在我的应用程序的其他地方有一个常规的EditText视图,它没有imeOptions,也没有指定inputType,而且确实有一个Return键
以下是其余代码供参考:
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);
}
答案 0 :(得分:1)
android:inputType="textMultiLine"
和android:singleLine="true"
正如@James Wald表示的那样有效。
编辑:
执行上述操作将使其成为EditText多行。相反,android:imeOptions="actionGo"
在我的所有设备(AFAIK)上都有用。