【发布时间】: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