我的应用程序中遇到textview问题。当应用程序第一次运行时,它工作得非常好,但是当我使用setContentView交换到不同的视图然后再返回时,软键盘将不会长时间打开,但我可以选择文本。
以下是我尝试切换回时的代码段:
public void setToMain(String _word)
{
setContentView(R.layout.main);
mWordInput = (TextView) findViewById(R.id.wordInput);
mWordInput.setText(_word);
}
即使我没有调用setText,我也会遇到问题。
答案 0 :(得分:1)
我的软键盘出现了类似的问题;虽然在我的情况下即使没有使用setContentView切换视图也不会显示。经过一些实验,我找到了仍然适合我的解决方案。这个想法是拦截任何EditText后代的软键盘显示/隐藏。为此,我重写了活动的WindowsFocusChanged。
诀窍在于不再需要时隐藏键盘。
正如您所看到的,我使用了shggleSoftInput和SHOW_IMPLICIT而不是任何HIDE常量。在这种情况下,只有当焦点视图需要时,IMEManager才会保持键盘可见,否则它将被隐藏。
private boolean softInputActive;
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
InputMethodManager IMEManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
View focusedView = getCurrentFocus();
// Find the primitive focused view (not ViewGroup)
while (focusedView instanceof ViewGroup) {
focusedView = ((ViewGroup) focusedView).getFocusedChild();
}
if (hasFocus) {
if (focusedView instanceof EditText && focusedView.isEnabled()
&& !IMEManager.isActive(focusedView)) {
IMEManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
softInputActive = true;
}
} else if (softInputActive) {
if (focusedView != null && IMEManager.isActive()) {
IMEManager.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, 0);
}
softInputActive = false;
}
}
答案 1 :(得分:0)
android:windowSoftInputMode="stateVisible|adjustPan"