1

如何在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

4 回答 4

3

在活动标签的清单文件中使用它:

<activity
        android:name=".ExampleActivity"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.NoTitleBar" 
        android:windowSoftInputMode="stateHidden">
</activity>
于 2012-12-24T13:51:39.057 回答
1

在焦点事件中做这些事情。您已经为 EditText 实现了焦点事件并检查 hasFocus 对象是否为真,然后显示键盘和光标,否则将其隐藏

于 2012-12-24T13:42:04.387 回答
1

使用类的.实现FocusListener和隐藏键盘。InputMethodManagerhideSoftInputFromInputMethod

于 2012-12-24T13:49:37.010 回答
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>
于 2013-08-10T19:16:06.847 回答