Android - 禁止在禁用EditText后关闭软键盘

时间:2016-12-16 02:51:48

标签: android android-edittext android-softkeyboard

我正在尝试一个非常简单的用户界面,有一个EditText和一个ImageView。当我点击EditText时,我想接受来自用户的输入。现在当我点击ImageView(当键盘仍处于打开状态)时,我想禁用EditText,同时阻止软键盘关闭。但是setEnabled(false)会自动关闭软键盘。

这是我的能力:

public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        final EditText editText = (EditText) findViewById(R.id.edit_text);
        final ImageView imageView = (ImageView) findViewById(R.id.image_view);
        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                editText.setEnabled(false);
            }
        });
    }
}

以下是用户界面:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.pearson.android.test.stackoverflow_efficient_data_construction_recyclerview.SecondActivity"
    tools:showIn="@layout/activity_second">

    <EditText
        android:id="@+id/edit_text"
        android:layout_width="300dp"
        android:layout_height="wrap_content" />

    <ImageView
        android:id="@+id/image_view"
        android:layout_alignParentRight="true"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:background="@android:color/holo_red_dark"/>

</RelativeLayout>

我试着像这样保持软键盘打开:

InputMethodManager inputManager = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
        inputManager.toggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);

但是有一个非常明显的闪烁(好像旧键盘关闭并被新键盘取代)。

我也尝试过不禁用EditText(点击图片后我不能输入任何文字)并尝试操纵它的可聚焦性,但没有成功。

任何方向或解决方案都会受到最高的赞赏。

1 个答案:

答案 0 :(得分:0)

尝试使用此代码隐藏键盘

  imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               hideKeyboard(getContext());
            }
        });
public static void hideKeyboard(Context ctx) {
            InputMethodManager inputManager = (InputMethodManager) ctx
                    .getSystemService(Context.INPUT_METHOD_SERVICE);
            View v = ((Activity) ctx).getCurrentFocus();
            if (v == null)
                return;

            inputManager.hideSoftInputFromWindow(v.getWindowToken(), 0);
        }