尝试隐藏键盘时,getCurrentFocus为null

时间:2017-08-25 01:24:10

标签: android

我有一个RelativeLayout嵌套在另一个RelativeLayout中。默认情况下,它是隐藏的。当用户单击按钮时,嵌套的RelativeLayout变为可见。此布局包含EditText。用户输入完成后,我想隐藏键盘:

<RelativeLayout
 ...
    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/cameraEmoji"
        android:contentDescription="@string/camera_emoji"
        android:src="@mipmap/ic_image_black_24dp"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/cameraText"
        android:layout_marginStart="57dp" />


    <RelativeLayout android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/emojiTextView"
        android:background="#80444444">
        <EditText
                android:id="@+id/actionEmojiText"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:background="#FFF"
                android:imeActionId="@+id/finishText"
                android:imeActionLabel="@string/action_complete_emoji_text"
                android:imeOptions="actionDone"
                android:maxLines="1"
                android:singleLine="true"/>
    </RelativeLayout>
  ...
</RelativeLayout>

活动:

cameraText = (ImageButton)findViewById(R.id.cameraText);
        cameraText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                emojiTextView = (RelativeLayout) findViewById(R.id.emojiTextView);
                emojiTextView.setVisibility(View.VISIBLE);
                final EditText actionEmojiText = (EditText)findViewById(R.id.actionEmojiText);
                actionEmojiText.setOnEditorActionListener(new TextView.OnEditorActionListener() {

                    @Override
                    public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) {
                        if (id == EditorInfo.IME_ACTION_UNSPECIFIED) {
                            emojiTextView.setVisibility(View.INVISIBLE);


                            View view = MainActivity.this.getCurrentFocus();
                            if (view != null) {
                                InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
                                imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
                            }

                            dropTextIn(actionEmojiText);
                        }
                        return false;
                    }
                });
            }
        });

getCurrentFocus返回null但键盘仍然可见。键入EditText字段后如何隐藏键盘?

2 个答案:

答案 0 :(得分:0)

editText.setFocusable(false);
editText.setFocusableInTouchMode(true);

尝试将这两个属性添加到EditText,在键入Edittext后触摸任何其他视图时会隐藏键盘

答案 1 :(得分:0)

我发现了似乎是什么问题。 getCurrentFocus()返回null,因为我调整的项目在调用View.INVISIBLE之前已设置为getCurrentFocus()。因此,视图不再可见,因此不再集中。