2015-10-23 2 views
2

В моей деятельности у меня есть два фрагмента Fragment.Both. У меня есть EditText.Я хочу скрыть мягкую клавиатуру на одном из EditText во фрагменте.Android: EditText Soft Keyboard не скрывается в первый раз

Стараюсь с этим кодом в одном фрагменте перед установкой макета

getActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM, 
      WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM); 

Когда я использую эту строку кода клавиатуры скрывается в обоих Fragment.But Я хочу, чтобы показать клавиатуру в одном фрагменте Вид

Я стараюсь еще одну строку кода в момент EditText «OnTouchListener» и «OnClickListener»

edt_dailNumber.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
      closeKeyboard(getActivity(),edt_dailNumber.getWindowToken()); 
       return false; 
      } 
     }); 

     edt_dailNumber.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       closeKeyboard(getActivity(), edt_dailNumber.getWindowToken()); 
      } 
     }); 



public static void closeKeyboard(Context c, IBinder windowToken) { 
    InputMethodManager mgr = (InputMethodManager) c.getSystemService(Context.INPUT_METHOD_SERVICE); 
    mgr.hideSoftInputFromWindow(windowToken, 0); 
} 

с помощью этого кода скрывается мягкая клавиатура.

Но когда я нажимаю/касаюсь EditText в первый раз, когда отображается KeyBoard. После этого во второй раз и далее клавиатура скрывается

<EditText 
      android:id="@+id/edt_dailNumber" 
      android:layout_width="0dp" 
      android:layout_weight=".85" 
      android:paddingLeft="5dp" 
      android:layout_gravity="center_vertical" 
      android:textSize="@dimen/dail_dailpad_hint_text_size" 
      android:layout_marginLeft="8dp" 
      android:textColor="#000" 
      android:inputType="number" 
      android:gravity="center" 
      android:ellipsize="start" 
      android:layout_height="match_parent" 
      android:background="@drawable/edit_text_line_contacts" 
      /> 

Я не понимаю, почему мягкая клавиатура шоу в первый раз Нажмите

Может ли дать мне решение этой проблемы

Спасибо advcance :)

ответ

0

Ваша мягкая клавиатура скрывается при втором нажатии из-за этого, вы используете edittext. При первом щелчке ваш текст будет получать фокус. то второй щелчок вызывает onClickListener. Вот почему это происходит.

Если вы хотите использовать EditText себя для этой задачи particalur то лучше использовать setOnFocusChangeListener() вместо onClickListner().

Изменение Код:

edt_dailNumber.setOnFocusChangeListener(new OnFocusChangeListener() { 
    @Override 
    public void onFocusChange(View v, boolean hasFocus) { 
     if(hasFocus) 
     { 
      // Open keyboard 
      ((InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(searchEditText, InputMethodManager.SHOW_FORCED); 
     } else { 
      // Close keyboard 
      ((InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(searchEditText.getWindowToken(), 0);   } 
    } 
}); 

Теперь вы можете вручную открыть и скрыть клавиатуру, делая код ниже:

для открытого

setEditTextFocus(true); 

И для закрытия:

setEditTextFocus(false); 

И если вы хотите, чтобы непосредственно закрыть клавиатуру затем написать:

edt_dailNumber.setInputType(InputType.TYPE_NULL); 
+0

Я пытался, по-прежнему ее не работает, я просто обновить в том, как EditText в макете, пожалуйста, вы можете посмотреть в этот –

+0

чувак удалить setOnTouchListener() и метод setOnClickListener е введите свой код и используйте только setOnFocusChangeListener(). Тогда увидишь, что это сработает. Я пробовал это в своем коде и работал. – KishuDroid

+0

чувак Я прокомментировал как setOnTouchListener(), так и setOnClickListener. Теперь клавиатура не скрывает даже второе нажатие –

0

Если вы хотите, чтобы запустить onClickListener из EditText каждый раз, когда вы можете использовать

андроида: фокусируемый = «ложный»

в вашем edittext ..надеюсь, что это поможет вам

+0

Я хочу поместить курсор из editText, если der - это текст. if i put android: focusable = "false", vl не получает позицию –

+0

попробуйте использовать edittext.clearfocus(), когда вы скрываете программную клавиатуру и edittext.requestFocus(); когда вы показываете программную клавиатуру. – Vennila

2

Перейти к вашему файлу манифеста, деятельность использовать для редактирования текста поставить единственную линию андроида: windowSoftInputMode = «stateHindden»

0
youredittextid.setShowSoftInputOnFocus(false); 

** Это будет работать для шкуры вашего ключевого слова из EditText

**

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