我有一个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字段后如何隐藏键盘?
答案 0 :(得分:0)
editText.setFocusable(false);
editText.setFocusableInTouchMode(true);
尝试将这两个属性添加到EditText,在键入Edittext后触摸任何其他视图时会隐藏键盘
答案 1 :(得分:0)
我发现了似乎是什么问题。 getCurrentFocus()
返回null,因为我调整的项目在调用View.INVISIBLE
之前已设置为getCurrentFocus()
。因此,视图不再可见,因此不再集中。