软键盘未从片段中隐藏。如何隐藏键盘?

问题描述 投票:1回答:1

我已经使用片段创建了BottomSheet。我的片段包含EditText。当EditText处于焦点状态时,键盘会自动打开,但是当焦点未对准时,它不会自动关闭/隐藏。当我在BottomSheet片段之外单击时,我想隐藏/关闭键盘,如何找出它?

这是我的片段类

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();
            }
        });
    }

}
android fragment android-softkeyboard
1个回答
0
投票

发送InputMethodManager.HIDE_IMPLICIT_ONLY而不是像这样在0中发送toggleSoftInput(),看看它是否适合您的情况:

InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
© www.soinside.com 2019 - 2024. All rights reserved.