大家好我刚接触Android并在我的项目中陷入了非常愚蠢的问题我有一个EditText,它会在用户触摸EditText软键盘时在列表视图的页眉视图中定义。我有一个叫清除按钮的东西清除EditText清除软键盘后没有在2.3设备中显示。每当我按下锁定/电源按钮锁定设备并解锁然后软键盘显示
<activity
android:name=".pl.Mobile.AddJobNew"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="landscape"
android:windowSoftInputMode="stateVisible|adjustResize|adjustPan"
>
这是Android中的Android活动声明:windowSoftInputMode:&#39; adjustResize&#39;选项适用于Android 2.3设备但在4.0设备中失败,其中软键盘重叠在编辑文本上。选项&#39; adjustPan&#39;在4.0设备上工作得很好但在2.3设备中失败
请帮助我摆脱这个问题。
先谢谢
答案 0 :(得分:5)
使用编辑文本在活动中尝试此操作:
int currentapiVersion = android.os.Build.VERSION.SDK_INT;
if (currentapiVersion >= android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH){
// Do something for 4.0 and above versions
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
}
else{
// do something for phones running an SDK before 4.0
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
}
同时删除,
android:windowSoftInputMode="stateVisible|adjustResize|adjustPan"
来自清单文件中的活动。
答案 1 :(得分:2)
我认为问题在于,当您单击清除按钮时,editText会失去焦点,因此键盘会隐藏自己。
我会尝试两件事来解决它;
清理文本后,执行:
yourEditTextField.requestFocus()
手动控制键盘可见性:
public void showKeyboard(){ View view = getWindow()。getCurrentFocus(); if(view == null) 返回;
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(view, InputMethodManager.SHOW_FORCED);
}
public void hideKeyboard(){ View view = getWindow()。getCurrentFocus(); if(view == null) 返回;
IBinder binder = view.getWindowToken();
if (binder == null)
return;
// prevent a bug in some keyboards that makes the text hang on the screen
if (view instanceof EditText)
((EditText)view).setText(((EditText)view).getText().toString());
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(binder, InputMethodManager.HIDE_NOT_ALWAYS);
}
答案 2 :(得分:1)
我的AndroidManifest.xml文件中有以下行,效果很好。请试试这段代码。不要添加任何额外的代码。如果你没有取得任何成功,请告诉我。我想帮助你。
<activity android:name=".pl.Mobile.AddJobNew" android:screenOrientation="portrait" android:configChanges="keyboard|orientation" android:windowSoftInputMode="adjustPan"/>
尝试使用上述代码进行活动。
答案 3 :(得分:1)
尝试类似的东西
editext1.setOnTouchListener(new OnTouchListener()
{
public boolean onTouch(View v, MotionEvent event)
{
if (v instanceof EditText)
{
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
v.requestFocusFromTouch();
return true;
}
return false;
}
});
如果它不起作用,请尝试添加
editext1.setOnFocusChangeListener(new OnFocusChangeListener()
{
public void onFocusChange(View v, boolean hasFocus)
{
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
});
也可以从布局中删除请求焦点。并且可能在活动清单中设置 android:windowSoftInputMode =“stateHidden | stateAlwaysHidden”