我知道如果类是扩展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,并且可以集中精力。但它仍然无法正常工作。 请帮助我,提前谢谢:)
答案 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);
}
}
});