2015-06-24 2 views
0

Я хочу скрыть кнопку, когда я нажимаю на editText в Android. Первоначально я использовал следующий кодКак скрыть кнопку на editText нажмите на Android?

editText.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       button.setVisibility(View.INVISIBLE); 
      } 
     }); 

Но для этого мне нужно дважды щелкнуть по editText. Таким образом, чтобы избежать этого я сделал EditText фокус ложной

android:focusable="false" 

и следующий код в OnClickListener из EditText

editText.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        button.setVisibility(View.INVISIBLE); 
    InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Service.INPUT_METHOD_SERVICE); 
      imm.showSoftInput(donationQuantity, 0); 

       } 
      }); 

В этом случае, я могу скрыть кнопку с одним щелчком мыши на EditText , но клавиатура не появляется.

+0

Почему бы не использовать onFocusChangedListener и посмотреть, сможете ли вы получить фокус? –

ответ

2

Попробуйте использовать setOnTouchListener вместо:

editText.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View view, MotionEvent motionEvent) { 
      button.setVisibility(View.INVISIBLE); 
      return false; 
     } 
    }); 
0

пытаются использовать этот код для вызова клавиатуры:

InputMethodManager inputMethodManager=(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
inputMethodManager.toggleSoftInputFromWindow(linearLayout.getApplicationWindowToken(), InputMethodManager.SHOW_FORCED, 0); 
1

Вместо OnClick зарегистрироваться OnTouchListener и слушать TouchDown событие, всякий раз, когда приземление события появляется контрольная кнопка Visible/Invisible.

editText.setOnTouchListener(new OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      editText.setFocusable(true); 
      editText.requestFocus(); 
     } 
     return true; 

    } 
}); 
+0

Это работает. Можете ли вы сказать разницу между onClick и onTouch для editText? – user3213851

+0

OnTouch дает MotionEvent, где событие onClick - это полное событие, состоящее из фокусировки, нажатия и отпускания. – strike

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