Chiudere la tastiera in ViewPager

Ho implementato tre tabs utilizzando ViewPager. Nel layout di tabulazione destra ho un widget di text di modifica, quando gli utenti scattano su esso la tastiera viene in su. Se l'utente non chiude manualmente la tastiera e scorrimento alla linguetta centrale o sinistra, la tastiera rimane sullo schermo. Quindi, come evitare la tastiera in altre due tabs where non ne ho bisogno.

Modifica: Ecco il mio codice.

  • Android: Creazione di un TextView circolare?
  • Dove si trova cordova-2.7.0.jar?
  • C'è un buon strumento per fare il layout di layout di Android?
  • Google PlacePicker si chiude immediatamente dopo il lancio
  • Phonegap / Cordova whitelisted cross domain SSL non funzionava dopo l'esportzione di APK
  • Memorizzare un elenco o impostare in SharedPreferences
  • class ViewPagerActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); MyPagerAdapter adapter = new MyPagerAdapter(); ViewPager myPager = (ViewPager) findViewById(R.id.myfivepanelpager); myPager.setAdapter(adapter); myPager.setCurrentItem(1); TitlePageIndicator titleIndicator = (TitlePageIndicator) findViewById(R.id.titles); titleIndicator.setViewPager(myPager); } } 

    Secondo file: MyPagerAdapter.java

      class MyPagerAdapter extends PagerAdapter implements OnClickListener, OnLongClickListener, AdapterView.OnItemSelectedListener { public Object instantiateItem(View collection, int position) { LayoutInflater inflater = (LayoutInflater) collection.getContext() .getSystemService(Context.LAYOUT_INFLATER_SERVICE); int resId = 0; View view; switch (position) { case 0: resId = R.layout.left; view = inflater.inflate(resId, null); break; case 1: resId = R.layout.main_c; view = inflater.inflate(resId, null); btn_no1 = (Button) view.findViewById(R.id.one); btn_no1.setOnClickListener(this); ((ViewPager) collection).addView(view, 0); return view; case 2: resId = R.layout.right; view = inflater.inflate(resId, null); main_spinner = (Spinner) view.findViewById(R.id.spinner1); main_spinner.setOnItemSelectedListener(this); from_spinner = (Spinner) view.findViewById(R.id.spinner2); from_spinner.setOnItemSelectedListener(this); to_spinner = (Spinner) view.findViewById(R.id.spinner3); to_spinner.setOnItemSelectedListener(this); swap = (ImageButton) view.findViewById(R.id.swap_spinner); swap.setOnClickListener(this); ((ViewPager) collection).addView(view, 0); return view; } view = inflater.inflate(resId, null); ((ViewPager) collection).addView(view, 0); return view; } 

    E TitlePageIndicator ha il seguente aspetto: TitlePageIndicator

  • Come aprire / chiudere SQLite db in Android correttamente
  • Problemi di CvCaptureFromAVI - OpenCV Android
  • RadioGroup consente di select più RadioButton
  • CoordinatorLayout: Nascondere / Mostrare la barra degli strumenti metà visibile?
  • android ndk sviluppo issue: errore 'errori non validi' per la function memcpy
  • Come avviare l'attività dal widget dello schermo home di android
  • 3 Solutions collect form web for “Chiudere la tastiera in ViewPager”

    A mio parere questo non è un problema serio. L'utente apre la tastiera per l'inserimento di text e lo nasconderà quando non è più necessario.

    Avere un riferimento all'object EditText, occorre hide la tastiera:

     InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); mgr.hideSoftInputFromWindow(editText.getWindowToken(), 0); 

    Chiamate lo snippet sopra quando esci dalla scheda giusta.

    Prova questo.

    Innanzitutto, ascoltate l'evento ViewPager.OnPageChangeListener. Controllare quindi se la tastiera soft è visibile, se viene visualizzata nella pagina in cui non è necessaria, nasconderlo utilizzando questo codice:

     InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); if(imm != null){ imm.toggleSoftInput(0, InputMethodManager.HIDE_IMPLICIT_ONLY); } 

    Spero possa aiutare. 🙂

    Se aiuta qualcuno, sono venuto fuori con questo:

    Classe Utils

     public void hideKeyboard(Activity activity) { if (activity == null || activity.getCurrentFocus() == null || activity.getCurrentFocus().getWindowToken() == null) return; InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } public void hideKeyboard(Fragment fragment) { if (fragment == null || fragment.getActivity() == null || fragment.getActivity().getCurrentFocus() == null || fragment.getActivity().getCurrentFocus().getWindowToken() == null) return; InputMethodManager inputManager = (InputMethodManager) fragment.getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.hideSoftInputFromWindow(fragment.getActivity().getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } 

    e all'interno della class MyPagerAdapter

      @Override public void setPrimaryItem(ViewGroup container, int position, Object object) { super.setPrimaryItem(container, position, object); //assuming fragment in position 2 should hide the keyboard if (position == 2) { new SystemGlobal().hideKeyboard((Fragment) object); } } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.