如何在EditText视图中禁用软件键盘并在Android 4.0+中同时显示光标?

时间:2012-12-24 13:37:35

标签: java android android-keypad

如何在EditText视图中停用软件键盘并同时显示cursor

我尝试了stackoverflow上的所有示例并得到两种情况:

1。键盘被隐藏,光标被隐藏

2。键盘正在显示,光标正在显示

但我需要键盘隐藏和光标显示。怎么做?

我接下来会这样做:

dialText.setOnFocusChangeListener(new OnFocusChangeListener() {

    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(dialText.getWindowToken(), 0);

    }
});

dialText.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(dialText.getWindowToken(), 0);
        return false;
    }
});

键盘仍未隐藏,当我移动光标时,键盘再次出现。

此问题仅适用于Android 4.0版+。

4 个答案:

答案 0 :(得分:3)

在活动代码中的清单文件中使用此功能:

<activity
        android:name=".ExampleActivity"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.NoTitleBar" 
        android:windowSoftInputMode="stateHidden">
</activity>

答案 1 :(得分:1)

在焦点事件中做这件事。你有针对EditText的焦点事件实现并检查hasFocus对象是否则显示键盘和光标否则隐藏它

答案 2 :(得分:1)

实施FocusListener并使用InputMethodManager班级hideSoftInputFromInputMethod隐藏键盘。

答案 3 :(得分:1)

View.OnTouchListener onTouchListener = new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                v.requestFocus();
                return true;
            }
        };

dialText.setOnTouchListener(onTouchListener);

的AndroidManifest.xml:

<activity    
    ... 
    android:windowSoftInputMode="stateAlwaysHidden"
    ...
</activity>