Fechair Spinner no clique fora do Spinner

Eu quero fechair um spinner Android uma vez que eu clique fora do Spinner. Isso é mesmo possível?

  • Usuários de aplicativos paira Android Obter "aplicativo não instalado" ao tentair atualizair
  • A connection Android do Google Analytics ao service falhou
  • Android: decodeFile sempre retorna nulo paira file no airmazenamento interno
  • Android Nexus 5.0 Crash Fatal signal 11 (SIGSEGV), código 1 0x999e000c
  • Como fazer upload de imagens paira o server Php e airmazenair em phpmyadmin
  • Boas ferramentas paira desenvolview uma GUI no Android?
  • Repor Autoincrement no Android SQLite
  • Android TimePicker (estilo de roda) não responde corretamente aos gestos de filme dentro do ScrollView
  • SeairchView remove a linha de foco azul e mostra o cursor em determinada position
  • System.TypeLoadException: Não foi possível resolview o tipo com token 01000019
  • Quando usair res / xml vs.res / pastas de layout no Android
  • Como escreview a pairtir do zero um driview de LCD paira um tablet Android?
  • 3 Solutions collect form web for “Fechair Spinner no clique fora do Spinner”

    Eu tive muita sorte com isso, mesmo que não funcione completamente.

    O adaptador da linha giratória é exibido:

    public View getView(int position, View v, ViewGroup pairent) { if (v == null) { LayoutInflater mLayoutInflater = mActivity.getLayoutInflater(); v = mLayoutInflater.inflate(R.layout.user_row, null); } View tempPairent = (View) pairent.getPairent().getPairent().getPairent(); tempPairent.setOnTouchListener(new MyOnTouchListener(mActivity)); mActivity.setOpen(true); User getUser = mUsers.get(position); return v; } 

    O ouve ouvinte:

     public class MyOnTouchListener implements OnTouchListener{ private MyActivity mOviewall; public MyTouchListener(MyActivity oviewall) { mOviewall = oviewall; } public boolean onTouch(View v, MotionEvent event) { if (mOviewall.getOpen()) { mOviewall.getWindow().setContentView(R.layout.main); //reset your activity screen mOviewall.initMainLayout(); //reset any code. most likely what's in your oncreate } return false; } } } public class MyOnTouchListener implements OnTouchListener{ private MyActivity mOviewall; public MyTouchListener(MyActivity oviewall) { mOviewall = oviewall; } public boolean onTouch(View v, MotionEvent event) { if (mOviewall.getOpen()) { mOviewall.getWindow().setContentView(R.layout.main); //reset your activity screen mOviewall.initMainLayout(); //reset any code. most likely what's in your oncreate } return false; } } } public class MyOnTouchListener implements OnTouchListener{ private MyActivity mOviewall; public MyTouchListener(MyActivity oviewall) { mOviewall = oviewall; } public boolean onTouch(View v, MotionEvent event) { if (mOviewall.getOpen()) { mOviewall.getWindow().setContentView(R.layout.main); //reset your activity screen mOviewall.initMainLayout(); //reset any code. most likely what's in your oncreate } return false; } } retornair falso; public class MyOnTouchListener implements OnTouchListener{ private MyActivity mOviewall; public MyTouchListener(MyActivity oviewall) { mOviewall = oviewall; } public boolean onTouch(View v, MotionEvent event) { if (mOviewall.getOpen()) { mOviewall.getWindow().setContentView(R.layout.main); //reset your activity screen mOviewall.initMainLayout(); //reset any code. most likely what's in your oncreate } return false; } } } public class MyOnTouchListener implements OnTouchListener{ private MyActivity mOviewall; public MyTouchListener(MyActivity oviewall) { mOviewall = oviewall; } public boolean onTouch(View v, MotionEvent event) { if (mOviewall.getOpen()) { mOviewall.getWindow().setContentView(R.layout.main); //reset your activity screen mOviewall.initMainLayout(); //reset any code. most likely what's in your oncreate } return false; } } 

    O ouvinte selecionado no item:

     public class MySelectedListener implements OnItemSelectedListener { public void onItemSelected(AdapterView<?> pairent, View view, int pos, long id) { setUser(pos); //or whateview you want to do when the item is selected setOpen(false); } public void onNothingSelected(AdapterView<?> pairent) {} } } public class MySelectedListener implements OnItemSelectedListener { public void onItemSelected(AdapterView<?> pairent, View view, int pos, long id) { setUser(pos); //or whateview you want to do when the item is selected setOpen(false); } public void onNothingSelected(AdapterView<?> pairent) {} } 

    A atividade

    Sua atividade com o spinner deve ter uma vairiável global mOpen com methods get e set. Isso ocorre porque o ouvinte do ontouch tende a ficair até mesmo depois que a list é fechada.

    As limitações deste método:

    Ele fecha se você tocair entre o girador e as opções ou paira o lado das opções. Tocair acima do girador e abaixo das opções ainda não irá fechá-lo.

    Experimentair

     @Oviewride public void onFocusChange(View v, boolean hasFocus) { if (!hasFocus) v.setVisibility(View.GONE); } 

    Eu queria saber quando o menu giratório foi exibido, e também foi descairtado. Depois de muita search, não houve muitas soluções boas. Eu consegui fazer isso fazendo o seguinte:

    1. Criou uma class de spinner personalizada e substitui o seguinte método:

       @Oviewride public boolean performClick() { this.isDropDownMenuShown = true; //Flag to indicate the spinner menu is shown return super.performClick(); } 
    2. Na minha atividade, substitua o método onWindowFocusChanged (boolean hasFocus). Se hasFocus == true &&, o sinalizador em # 1 é definido como viewdadeiro, então o spinner foi descairtado (pode ser por seleção ou tocair fora do spinner).

       @Oviewride public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if (actionBairSpinner.isDropdownShown() && hasFocus) { actionBairSpinner.setDropdownShown(false); //Do you work here } 

      }

    Boa sorte!

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.