如何在EditText中禁用默认键盘,允许其他操作

时间:2013-07-20 20:22:10

标签: android android-edittext

我有一个EditText,因为我在我的应用程序中使用自定义键盘,我已禁用标准的Android键盘。 不幸的是现在似乎我无法使用复制粘贴,选择等当我点击Jelly Bean中的EditText时,在Gingerbread中我的编辑文本具有所需的行为。

我只需要禁用Android键盘来使用我的自定义键盘,但其他复制粘贴操作,选择等必须是活动的

我该如何解决这个问题?

我的EditText是这样的:

<EditText
            android:id="@+id/input"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="5dp"
            android:autoText="false"
            android:background="@color/light_sky"
            android:cursorVisible="true"
            android:editable="true"
            android:gravity="left"
            android:imeOptions="flagNoEnterAction|flagNoExtractUi"
            android:scrollbars="none"
            android:singleLine="true"
            android:textSize="32dip" />

3 个答案:

答案 0 :(得分:3)

您可以在EditText中设置一个空输入。

如果是其他情况,您可以阻止键盘显示只需在清单中使用

android:configChanges="orientation|keyboardHidden"

通过这种方式,Android键盘不会自动打开,但只有在您直接点击EditText

时才会显示

答案 1 :(得分:2)

在此主题https://stackoverflow.com/a/10636686/2558337的基础上,我认为您应该@Override onClickListener

inputField.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
        }
    });

答案 2 :(得分:1)

你甚至可以试试这个

声明一个InputMethodManager变量private InputMethodManager imm;

onActivityCreated()方法中添加以下行

// to hide the keypad
imm = (InputMethodManager) getActivity().getBaseContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(inputSearch.getWindowToken(), 0);

要取消隐藏,请使用以下代码

editText = (EditText) getView().findViewById(R.id.editText);
editText.setOnClickListener(new OnClickListener() {

      @Override
      public void onClick(View v) {
           // TODO Auto-generated method stub
           imm.showSoftInput(inputSearch, 0);
      }
});