Android 如何在焦点更改时停止软键盘自动显示(OnStart事件)

Android 如何在焦点更改时停止软键盘自动显示(OnStart事件),android,android-softkeyboard,android-edittext,Android,Android Softkeyboard,Android Edittext,我正在开发一款使用安卓2.2的平板电脑 我有一个用于新的可编辑实例的表单。当可编辑时,我想阻止用户编辑某些字段。我在我的onStart-事件中管理它,设置txt.setFocusableInTouchMode(false)。 这会将焦点强制转移到我的表单中的下一个可聚焦的EditText(这很好),但在运行时,带焦点的EditText会自动显示软键盘。 有人知道怎么阻止吗 以下是代码(在onStart事件中调用): 也许这会帮助你: getWindow().setSoftInputMode(Wi

我正在开发一款使用安卓2.2的平板电脑

我有一个用于新的可编辑实例的表单。当可编辑时,我想阻止用户编辑某些字段。我在我的
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