如何禁用EditText的键盘和光标功能..?

时间:2012-03-23 09:17:48

标签: android keyboard cursor android-edittext

我使用自己的键盘制作应用程序,我想完全禁用Android默认的virtaul键盘。

我试过这个:

 myEditText.setOnClickListener(new OnClickListener()
        {
            public void onClick(View v) 
            {
                InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
                 imm.hideSoftInputFromWindow(keresetEditText.getWindowToken(), 0);

            }
         });

它工作得非常好,但是我意外地发现了一个错误,真的让我陷入了困境:

当我在EditText上滑下手指时,软键盘就出现了! 所以结论是:onClickListener在我滑动时没有运行,而不是点击。

我试过onTouchListener,但它没有用! 任何提示我怎么能完全禁用虚拟键盘?我不需要在整个应用程序中使用它。

其他事情: 我可以向stackoverflow提出另一个问题,但我认为这是合乎逻辑的: 当我单击EditText的光标时,我可以在EditText中的文本中移动它,但我不希望它像这样启用。我可以禁用游标MOVEability ???所以我需要闪烁的光标,但只是处于停留位置。

1 个答案:

答案 0 :(得分:5)

以下是一些适合您的解决方案:

  • 如果您永远不需要软键盘显示该活动,您可以在清单中设置android:windowSoftInputMode="stateAlwaysHidden"属性

  • 禁用编辑文字。您将没有闪烁的光标(或任何光标),但是使用禁用的编辑文本打开软键盘是不可能的,同时仍然可以在代码中设置您自己的文本

  • 只需使用TextView,同时设置为背景android.R.drawable.edit_text。它看起来像一个EditText,虽然只是一个只读的TextView,仍然允许你从代码中设置任何值。同样,你仍然没有闪烁的光标

  • 将EditText的可聚焦和可点击属性设置为false。编辑文本永远不会获得焦点,因此永远不会导致软键盘显示

  • (这是一个黑客攻击)在edittext上放置一个不可见的按钮,因此实际上可以通过什么也不做的按钮拦截edittext上的点击。编辑文本仍然可以使用轨迹球或方向键进行聚焦,并且您仍然没有闪烁的光标