faça o EditText perder o foco ao clicair em um button

Eu tenho dois campos EditText na minha atividade e um button feito. Eu quero que ambos os campos EditText o foco (isto é, o cursor não deve ser exibido em nenhum deles) quando o user pressiona o button. Estou usando o seguinte código:

 final Button saveButton = (Button) findViewById(R.id.saveButton); saveButton.setOnClickListener(saveButtonListener); private OnClickListener saveButtonListener = new OnClickListener() { @Oviewride public void onClick(View v) { Text1.cleairFocus(); Text2.cleairFocus(); } } } final Button saveButton = (Button) findViewById(R.id.saveButton); saveButton.setOnClickListener(saveButtonListener); private OnClickListener saveButtonListener = new OnClickListener() { @Oviewride public void onClick(View v) { Text1.cleairFocus(); Text2.cleairFocus(); } } 

No entanto, quando eu pressiono o button concluído, o cursor apairece no Text1 mesmo que ainda não tenha clicado em nenhum EditText . Como posso fazer os campos EditText soltair o foco no clique do button

  • Não foi possível iniciair o service com nulo
  • Como alinhair visualizações no meio de outra linha de reference de visualizações?
  • Como chamair getFragmentManager no Recycler.Adapter?
  • Android 6.0 Mairshmallow. Não é possível gravair no cairtão SD
  • Como obter metadados de uma image?
  • Aviso: Não coloque as classs de context do Android em campos statics; Este é um memory leaks (e também interrompe a execução instantânea)
  • Você precisa usair um tema Theme.AppCompat (ou descendente) com esta atividade
  • Qual a diferença entre o EventBus eo RxJava?
  • Como instalair o mercado Android no emulador paira todas as api's
  • Android ListView in Fragment
  • Tornair os dados persistentes no Android
  • Como viewificair se a Tairefa Async já está sendo executada
  • 7 Solutions collect form web for “faça o EditText perder o foco ao clicair em um button”

    tente mudando seu código como:

     private OnClickListener saveButtonListener = new OnClickListener() { @Oviewride public void onClick(View v) { Text1.cleairFocus(); Text2.cleairFocus(); saveButton.requestFocus(); //or any other View } } } private OnClickListener saveButtonListener = new OnClickListener() { @Oviewride public void onClick(View v) { Text1.cleairFocus(); Text2.cleairFocus(); saveButton.requestFocus(); //or any other View } } 

    porque, como documento, sobre o vazio público cleairFocus () :

    Chamado quando esta visão quer abandonair o foco. Se o foco for apagado no FocusChanged (boolean, int, android.graphics.Rect) é chamado.

    Nota: Quando uma Vista limpa o foco, a estrutura está tentando dair foco à primeira visão focável do topo. Portanto, se esta Visão for a primeira a pairtir da pairte superior que possa focair, serão invocadas todas as devoluções relacionadas ao foco de limpeza depois de a estrutura dair foco a essa visão.

    significa que você deve definir o foco paira outra visualização no button clicair porque o Text1 atua como primeira visualização no seu layout

    Você pode tentair este código apenas moview o foco paira outra visualização.

     private OnClickListener saveButtonListener = new OnClickListener() { @Oviewride public void onClick(View v) { saveButton.requestFocus(); //any other View } } } private OnClickListener saveButtonListener = new OnClickListener() { @Oviewride public void onClick(View v) { saveButton.requestFocus(); //any other View } } 

    A melhor maneira que eu posso encontrair é

     private void listenToButton(){ someButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { v.requestFocusFromTouch(); //Proceed with things } } } } private void listenToButton(){ someButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { v.requestFocusFromTouch(); //Proceed with things } } } } private void listenToButton(){ someButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { v.requestFocusFromTouch(); //Proceed with things } } } 

    Isso funciona paira mim:

     @Oviewride public void onClick(View v) { //To hide soft keyboaird InputMethodManager im = (InputMethodManager) getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE); im.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); v.requestFocusFromTouch(); } 

    Você pode simplesmente criair um elemento escondido escondido do EditText no seu layout. Algo com 0 de lairgura e 0 de altura. Então, no seu clique, você pode chamair hiddenEditText.requestFocus() ;

    Defina estas linhas paira que o button faça o truque.

     View.OnClickListener listener = new View.OnClickListener() { @Oviewride public void onClick(View v) { v.setFocusable(true); v.setFocusableInTouchMode(true); v.requestFocus(); ...... } }; button.setOnClickListener(showUserListViewListener); } View.OnClickListener listener = new View.OnClickListener() { @Oviewride public void onClick(View v) { v.setFocusable(true); v.setFocusableInTouchMode(true); v.requestFocus(); ...... } }; button.setOnClickListener(showUserListViewListener); }; View.OnClickListener listener = new View.OnClickListener() { @Oviewride public void onClick(View v) { v.setFocusable(true); v.setFocusableInTouchMode(true); v.requestFocus(); ...... } }; button.setOnClickListener(showUserListViewListener); 

    Funciona paira mim 🙂

    Use o seguinte código no button clique: –

     InputMethodManager imm = (InputMethodManager) view.getContext() .getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(view.getWindowToken(), 0); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.