我有一个带有edittext的活动。当活动到来时,我总是关注Edittext。 我通过给出
使软键盘始终可见android:windowSoftInputMode="stateAlwaysVisible"
清单中的。我正在按下软键盘的完成按钮功能。实际上我需要的是当用户参加此活动时,应始终显示软键盘。 现在我禁用后退按钮按下,通过覆盖而不执行任何操作。
@Override
public void onBackPressed() {
// Do nothing
}
但是软键盘在背面按下了。如何摆脱这个。我试过这个Prevent soft keyboard from being dismissed,但仍然在后面的键盘上得到了解雇。但它再次按下后退按钮,我的需要是背压不应该忽略软键盘。任何帮助将不胜感激。
答案 0 :(得分:16)
创建一个自定义EditText,如下面的一个界面:
public class CustomEditText extends EditText {
public void setHandleDismissingKeyboard(
handleDismissingKeyboard handleDismissingKeyboard) {
this.handleDismissingKeyboard = handleDismissingKeyboard;
}
private handleDismissingKeyboard handleDismissingKeyboard;
public interface handleDismissingKeyboard {
public void dismissKeyboard();
}
@SuppressLint("NewApi")
public CustomEditText(Context context, AttributeSet attrs,
int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
// TODO Auto-generated constructor stub
}
public CustomEditText(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public CustomEditText(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public CustomEditText(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
// TODO Auto-generated constructor stub
}
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK
&& event.getAction() == KeyEvent.ACTION_UP) {
handleDismissingKeyboard.dismissKeyboard();
return true;
}
return super.dispatchKeyEvent(event);
}
然后在您的活动中创建初始化您的CustomEditText并使用:
customEditText.setHandleDismissingKeyboard(this);
然后实现class和override方法并将代码放在
中有关我的答案的更多信息,您需要的所有内容是onKeyPreIme
,您可以在EditText类中覆盖它(因为我发布给您)来处理所有键,例如返回键或任何其他键盘键,
我在自定义类中放置了一个内部接口,以便从此类回调到您想要的每个活动或类,您也可以使用静态方法执行此操作,并且如果您希望防止解除键盘,您只需返回true
在那。
使用CustomEditText
你可以使用xml或java,定义它并像其他小部件一样初始化(Button,TextView,...),只有不同的是你需要在你的xml中定义它,如: / p>
<yourPackage.CustomEditText ..... />