我有一个带有编辑文本的 Activity 。当 Activity 来临时,我总是专注于那个 Edittext。 我通过提供
使软键盘始终可见android:windowSoftInputMode="stateAlwaysVisible"
在 list 中。我正在按软键盘的完成按钮执行功能。实际上,我的需要是当用户进行此 Activity 时,软键盘应该始终存在。 现在我禁用了后退按钮按下,通过覆盖并且什么都不做。
@Override
public void onBackPressed() {
// Do nothing
}
但软键盘在后按时会消失。如何摆脱这个。我试过这个Prevent soft keyboard from being dismissed但仍然在后按键盘上被解雇。但它会通过再次按下后退按钮回来,我需要的是 backpress 不应该关闭软键盘。任何帮助将不胜感激。
最佳答案
使用一个界面创建一个自定义 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);
}
然后在您的 Activity 中创建初始化您的 CustomEditText 并使用:
customEditText.setHandleDismissingKeyboard(this);
然后实现类和覆盖方法并将您的代码放入其中
有关我的答案的更多信息,您需要的只是 onKeyPreIme
,您可以在 EditText 类中覆盖它(正如我为您发布的那样)以处理其上的所有键,例如返回键或任何其他键盘键,
我在自定义类中放置了一个内部接口(interface),以便从此类回调到您想要的每个 Activity 或类,您也可以使用静态方法来做到这一点,并且如果您想防止关闭键盘,您可以返回 true
在那。
对于使用 CustomEditText
,您可以使用 xml 或在 java 中,定义它并像其他小部件( Button , TextView ,... )一样初始化它,唯一不同的是您需要在您的 xml 中定义它喜欢:
<yourPackage.CustomEditText ..... />
关于android - 防止按下 android 后退按钮时软键盘关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27721709/