从对话框中的editText隐藏键盘

时间:2015-06-29 03:45:08

标签: java android dialog

我知道如果类是扩展Activity,如何隐藏键盘,但是当它扩展DialogFragment时,我的隐藏键盘代码来自Activity是不行的。

到目前为止,这是我的代码:

public class PersonalData extends DialogFragment
     LinearLayout activity_personaldata;

//Oncreate:
activity_personaldata = (LinearLayout) view.findViewById(R.id._activity_personaldata_);
    activity_personaldata.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(getActivity().getWindow().getDecorView().getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);
        }
    });

我的XML是:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/_activity_personaldata_"
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="vertical">

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="8dp">
</ScrollView>
</LinearLayout>

我在XML中的linearlayout中创建了ID,并且可以集中精力。但它仍然无法正常工作。 请帮助我,提前谢谢:)

1 个答案:

答案 0 :(得分:1)

onCreateView()中试用此代码。 getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

如果您想在用户点击EditText外部时隐藏键盘,则可以为focusListner实施EditText

 youreditText.setOnFocusChangeListener(new OnFocusChangeListener() {          

        public void onFocusChange(View v, boolean hasFocus) {
            if (!hasFocus) {
               InputMethodManager imm =  (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
               imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
            }
        }
    });