Hirdetés

Új hozzászólás Aktív témák

  • thon73

    tag

    Teljesen más téma, végre egyszer ne csak kérdést tegyek fel. Sokat kínlódtam azzal, hogy automatikusan eltüntessem a soft-keyboard-ot listView használatakor. A neten úgy láttam, hogy ezzel másnak is baja van.
    Én a következő érdekességet találtam:

    A listView megérintésére így tudtam eltüntetni a billentyűzetet:

    list.setOnTouchListener(new OnTouchListener()
    {
    @Override
    public boolean onTouch(View v, MotionEvent event)
    {
    if (event.getAction() == MotionEvent.ACTION_DOWN)
    {
    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow( list.getWindowToken(), 0);
    }
    return false;
    }

    } );

    Érdekes, hogy nem kell a focus-t átadni, ill. az is mindegy, hogy melyik View szolgáltatja a Token-t. A billentyűzet eltűnik, és ezt semmi más módon nem tudtam elérni itt.

    A készülék elfordításakor azonban a bill. mindenképpen előugrik, és a fenti módszer hatástalan volt. Ezzel szemben a focus elkérése működött (holott a fenti esetben nem!):

    @Override
    public void onResumeFragments()
    {
    ....
    // list.setFocusable( true ); //az utóbbi ezt is beállítja
    // list.setFocusableInTouchMode( true );
    // list.requestFocusFromTouch();
    list.requestFocus();
    }

    Az első három sor nem véletelenül kikommentelt, azok nélkül is működött.

    Most csak akkor lesz billentyűzetem, ha a keresőmezőbe írok. :C
    Ha valakinek lenne ennél egyszerűbb/jobb ötlete, szívesen veszem. Ha valakinek segít a fenti snipplet, annak is örülök!

Új hozzászólás Aktív témák