【问题标题】:getCurrentFocus is null when trying to hide the keyboard尝试隐藏键盘时 getCurrentFocus 为空
【发布时间】:2017-08-26 03:23:25
【问题描述】:

我有一个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 字段中输入后如何隐藏键盘?

【问题讨论】:

    标签: android


    【解决方案1】:
    editText.setFocusable(false);
    editText.setFocusableInTouchMode(true);
    

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

    【讨论】:

      【解决方案2】:

      我发现了问题所在。 getCurrentFocus() 正在返回 null,因为我在调用 getCurrentFocus() 之前已将我关注的项目设置为 View.INVISIBLE。因此,视图不再可见,因此不再聚焦。

      【讨论】:

        猜你喜欢
        • 2019-08-12
        • 1970-01-01
        • 2010-10-01
        • 2020-10-12
        • 2011-09-20
        • 1970-01-01
        • 2013-06-14
        • 2015-05-23
        • 2014-12-13
        相关资源
        最近更新 更多