软键盘不隐藏在片段中。如何隐藏键盘?
Soft keyboard not hiding from fragment. How to hide keyboard?
我使用片段创建了一个 BottomSheet
。我的片段包含 EditText
。当 EditText 获得焦点时,键盘会自动打开,但当它失去焦点时,它不会 close/hide 自动打开。当我在 BottomSheet
片段之外单击时,我想 hide/close 键盘,我该如何解决?
这是我的片段class
public class ListItemInputFragment extends BottomSheetDialogFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final EditText newTaskEt, detailsEt;
final TextView savBtn;
View view = inflater.inflate(R.layout.fragment_list_item_input, container, false);
newTaskEt = view.findViewById(R.id.new_task_et_id);
detailsEt = view.findViewById(R.id.details_et_id);
savBtn = view.findViewById(R.id.save_btn_id);
InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
imm.hideSoftInputFromWindow(newTaskEt.getWindowToken(), 0);
saveButtonClick(savBtn);
return view;
}
private void saveButtonClick(View view) {
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity().getBaseContext(), "Data Saved.", Toast.LENGTH_SHORT).show();
}
});
}
}
最后我想出了上述问题的解决方案
通过我的解决方案执行我进一步搜索的其他事情的方式,这是一种简单易行的方法。
我只是在我的 res/values/styles.xml 文件中创建了一个样式
<style name="DialogStyle" parent="Theme.Design.Light.BottomSheetDialog">
<item name="android:windowIsFloating">false</item>
<item name="android:windowSoftInputMode">adjustResize</item>
</style>
然后在片段中 class 我放入以下代码
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(DialogFragment.STYLE_NORMAL, R.style.DialogStyle);
}
我使用片段创建了一个 BottomSheet
。我的片段包含 EditText
。当 EditText 获得焦点时,键盘会自动打开,但当它失去焦点时,它不会 close/hide 自动打开。当我在 BottomSheet
片段之外单击时,我想 hide/close 键盘,我该如何解决?
这是我的片段class
public class ListItemInputFragment extends BottomSheetDialogFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final EditText newTaskEt, detailsEt;
final TextView savBtn;
View view = inflater.inflate(R.layout.fragment_list_item_input, container, false);
newTaskEt = view.findViewById(R.id.new_task_et_id);
detailsEt = view.findViewById(R.id.details_et_id);
savBtn = view.findViewById(R.id.save_btn_id);
InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
imm.hideSoftInputFromWindow(newTaskEt.getWindowToken(), 0);
saveButtonClick(savBtn);
return view;
}
private void saveButtonClick(View view) {
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity().getBaseContext(), "Data Saved.", Toast.LENGTH_SHORT).show();
}
});
}
}
最后我想出了上述问题的解决方案 通过我的解决方案执行我进一步搜索的其他事情的方式,这是一种简单易行的方法。
我只是在我的 res/values/styles.xml 文件中创建了一个样式
<style name="DialogStyle" parent="Theme.Design.Light.BottomSheetDialog">
<item name="android:windowIsFloating">false</item>
<item name="android:windowSoftInputMode">adjustResize</item>
</style>
然后在片段中 class 我放入以下代码
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(DialogFragment.STYLE_NORMAL, R.style.DialogStyle);
}