2015-06-29 2 views
0

Я знаю, как скрыть клавиатуру, если класс расширяет Activity, но когда он расширяет DialogFragment, мой код для скрытия клавиатуры из Activity не работает.Скрыть клавиатуру из editText в диалоге

это мой код до сих пор:

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> 

я есть сделать ID в LinearLayout в моем XML, и дать фокусирования. но он все еще не работает. , пожалуйста, помогите мне, спасибо заранее)

ответ

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); 
      } 
     } 
    }); 
+0

Извините, мой заголовок в этом сообщении неправильный. Я хочу скрыть клавиатуру, когда пользователь нажимает внешний редактор. и снова показывается, когда пользователь нажимает на edittext. Я использую linearlayout для скрытия клавиатуры. но он вообще не работает .. –

+0

Спасибо, его работа сейчас .. –

Смежные вопросы