Android 如何在焦点更改时停止软键盘自动显示(OnStart事件)
我正在开发一款使用安卓2.2的平板电脑 我有一个用于新的可编辑实例的表单。当可编辑时,我想阻止用户编辑某些字段。我在我的Android 如何在焦点更改时停止软键盘自动显示(OnStart事件),android,android-softkeyboard,android-edittext,Android,Android Softkeyboard,Android Edittext,我正在开发一款使用安卓2.2的平板电脑 我有一个用于新的可编辑实例的表单。当可编辑时,我想阻止用户编辑某些字段。我在我的onStart-事件中管理它,设置txt.setFocusableInTouchMode(false)。 这会将焦点强制转移到我的表单中的下一个可聚焦的EditText(这很好),但在运行时,带焦点的EditText会自动显示软键盘。 有人知道怎么阻止吗 以下是代码(在onStart事件中调用): 也许这会帮助你: getWindow().setSoftInputMode(Wi
onStart
-事件中管理它,设置txt.setFocusableInTouchMode(false)
。
这会将焦点强制转移到我的表单中的下一个可聚焦的EditText
(这很好),但在运行时,带焦点的EditText
会自动显示软键盘。
有人知道怎么阻止吗
以下是代码(在onStart
事件中调用):
也许这会帮助你:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
当第一次创建或调用活动时,将此方法放入您的
活动的onCreate()
方法中。我们可以通过以下方式隐藏设备键盘
,这完全取决于情况的需要_
第一路
EditText userId;
/*
* When you want that Keybord not shown untill user clicks on one of the EditText Field.
*/
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
/*
* Touch event Listener
* When you not want to open Device Keybord even when user clicks on concern EditText Field.
*/
userId.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
int inType = userId.getInputType(); // backup the input type
userId.setInputType(InputType.TYPE_NULL); // disable soft input
userId.onTouchEvent(event); // call native handler
userId.setInputType(inType); // restore input type
userId.setFocusable(true);
return true; // consume touch even
}
});
第二条路
第三种方式
EditText userId;
/*
* When you want that Keybord not shown untill user clicks on one of the EditText Field.
*/
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
/*
* Touch event Listener
* When you not want to open Device Keybord even when user clicks on concern EditText Field.
*/
userId.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
int inType = userId.getInputType(); // backup the input type
userId.setInputType(InputType.TYPE_NULL); // disable soft input
userId.onTouchEvent(event); // call native handler
userId.setInputType(inType); // restore input type
userId.setFocusable(true);
return true; // consume touch even
}
});
代表上述所有方式,您还可以在应用程序s
manifest`文件中定义windowSoftInputMode
_
<manifest ... >
<application ... >
<activity
android:windowSoftInputMode="stateHidden|stateAlwaysHidden"
... >
<intent-filter>
...
</intent-filter>
</activity>
</application>
</manifest>
...
我希望这将帮助所有人 这就是答案:
在AndroidManifest.xml中,向活动添加一个属性:
<activity android:name=".MyActivity" android:windowSoftInputMode="adjustPan"> </activity>
如果您想为特定的EditText
设置此选项,则此选项将起作用
editText.setShowSoftInputFocus(false)代码>这修复了我的xoom(Android 3.0.1)问题。我在onCreate()方法中添加了上述行。我仍然不确定什么是“软输入”。软输入是屏幕键盘。另一种选择是一个真正的物理键盘。这似乎对Android 2.2没有任何影响。软输入\u状态\u总是\u隐藏。你也可以通过在清单中的活动上添加Android:windowSoftInputMode=“stateHidden”来实现同样的效果。我想你完全忽略了这个问题,这不会隐藏键盘所需的API 21