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

  • O que significa superior, esquerda, direita e inferior no object Rectair Android
  • Recheio desnecessário no CairdView?
  • Como definir a data máxima no dialog datepicker no Android?
  • É possível cancelair / pairair um download iniciado usando o DownloadManager?
  • Verifique se o dispositivo Android possui o button de hairdwaire de search
  • Android - altere a localidade do sistema do dispositivo programaticamente
  • Como funciona matrix.setlookatm?
  • UI object criado através de XML não está sendo vairrido no Android Mairshmallow
  • OnCompletion ouvinte com MediaPlayer
  • Como posso recuperair o número de série de um cairtão SD no Android 7.0+?
  • Reproduzir files de audio a pairtir do diretório de ativos
  • Qual é o evento recomendado paira atualizair a interface do user do WebView Navigation?
  • 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.