Hello, I have exactly the same issue. Did anyone find a solution?
Thanks in advance! Rafael On 3 Feb., 12:55, kordzik <[email protected]> wrote: > Hi all, > > In my application I want to display a list of stuff and provide the > user with the ability to filter the list by using the soft keyboard. > To that end I added a popup with a button that should trigger (hide/ > show) the soft keyboard for filtering. I don't want to have a visible > edit text control, cause it would take up unnecessary space on the > screen. Rather than that, I would like to display a toast showing the > filter query as the user types, much as the > 'android:textFilterEnabled' attribute for ListView does. To my > understanding there is no obvious way of doing this with available > Android components. So I tried the following approach (this is only > the part for toggling soft keyboard): > > 1) creating a layout containing invisible edit text and the list view: > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/ > android" > android:id="@+id/list_container" > style="@style/main" > > <View class="com.blahblah.view.InsertTextView" <-- this is > basically EditView > android:id="@+id/filterbox" > android:layout_width="0dp" > android:layout_height="0dp" > android:visibility="invisible" > android:inputType="textFilter" > android:imeOptions="flagNoExtractUi|flagNoEnterAction| > flagNoAccessoryAction" > android:focusable="true" > android:focusableInTouchMode="true" > /> > > <ListView android:id="@+id/mylist" > android:drawSelectorOnTop="false" > android:layout_height="0px" > android:layout_width="fill_parent" > android:layout_weight="5" > /> > </LinearLayout> > > - adding button as a popup and invoking InputMethodManager on click to > toggle the soft input (called in onCreate): > > private void initButton() { > Button buttonView = (Button) > getLayoutInflater().inflate(R.layout.keyboard_button, null); > buttonView.setOnClickListener(new View.OnClickListener() { > public void onClick(View v) { > final View target = findViewById(R.id.filterbox); > InputMethodManager imm = (InputMethodManager) > getSystemService(Context.INPUT_METHOD_SERVICE); > // this does not work... > // > imm.toggleSoftInputFromWindow(target.getWindowToken(), > InputMethodManager.SHOW_FORCED, 0); > // ... so need to track this in an instance variable - > which sucks > if (imeShowing) { > > imm.hideSoftInputFromWindow(target.getWindowToken(), 0); > imeShowing = false; > } else { > // check that the filterbox got focus > > Preconditions.checkState(target.requestFocusFromTouch()); > Preconditions.checkState(target.hasWindowFocus()); > Preconditions.checkState(target.hasFocus()); > imm.showSoftInput(target, 0); > imeShowing = true; > } > } > }); > buttonPopup = new PopupWindow(buttonView); > // ... code to display the button as a popup > } > > As mentioned in the code sample, the 'obvious' approach (calling > toggleSoftInput) does not work, so I had to revert to this ugly if- > else. This is however, a secondary problem. The primary problem is > that when I run this in the emulator, the soft keyboard is displayed > correctly, but as soon as I start typing in it, an intent to the > google search activity is raised! And the typed characters appear in > the Google search box displayed as a result. What is even more weird, > this only happens the first time I type after deploying and running > the app. I.e. if I go back to my app from the Google search box, > everything works as expected (no redirects to the search box again). > Before showing the display I make sure that the invisible edittext > gets focus, so it _should_ be the target of the soft keyboard, right?? > > Does anyone have any idea what is happening here? > > Cheers, > Dariusz -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

