2

我有一个 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" />
4

3 回答 3

3

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

如果在其他情况下,您可以在清单中简单地使用来阻止键盘显示

android:configChanges="orientation|keyboardHidden"

这样,Android 键盘不会自动打开,只有在您直接单击 EditText 时才会显示

于 2013-08-20T02:06:46.403 回答
2

Building on this topic https://stackoverflow.com/a/10636686/2558337 i suppose that you should @Override onClickListener

inputField.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
        }
    });
于 2013-08-20T08:10:02.293 回答
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);
      }
});
于 2013-08-23T04:29:16.380 回答