Hari: this is exactly what I'd like to do. The EditText will be used
to input a specific value with only certain units allowed. So I have
extended android.inputmethodservice.Keyboard and use it together with
android.inputmethodservice.KeyboardView so that the keyboard only
shows the characters that make sense in this specific context. So far
the solution I have come up with is to get a handle on the
InputMethodManager (imm) and add OnFocus-, OnClick- and
OnTouchListener's for the EditText which all call the following helper
method:

        private boolean makeActive(View v) {
                imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
                EditText e = (EditText) v;
                int iType = e.getInputType();
                e.setInputType(InputType.TYPE_NULL);
                e.requestFocus();
                showKb();
                e.setInputType(iType);
                e.setSelection(e.getText().length());
                return true;
        }



        protected void showKb() {
                this.kbView.setVisibility(View.VISIBLE);


Here kbView is the KeyboardView connected to my custom keyboard. So
far this works - but it's not very elegant nor am I sure it is an
optimal solution. But as said, it's the only thing that works for me
so far. I'd be glad to receive some comments on your behalf.

On Feb 6, 3:51 pm, Hari Edo <hari....@gmail.com> wrote:
> I think he said he had a special soft keyboard that was to be used for
> this field.  Sounds like he doesn't want to go through the whole
> hassle
> of creating an entire soft keyboard, nor creating all the caret-
> position
> and backspace-handling code necessary to reinvent EditView.  I don't
> know the actual situation but imagine a Scrabble tile rack that only
> let
> you enter the letters in your rack, plus a backspace and DONE key.
>
> On Feb 6, 2:26 am, Dianne Hackborn <hack...@android.com> wrote:
>
> > Can I first ask, what are you trying to accomplish?  What is the purpose of
> > having an editable text view if the user can't actually put text into it?
>
> > On Tue, Feb 1, 2011 at 10:29 AM, zenperttu <perttu.s...@gmail.com> wrote:
> > > Hi!
>
> > > I would like a way to turn off showing the current soft keyboard for
> > > an EditText. I have a custom View that provides the soft input needed
> > > for an EditText, so on every occasion (on click, on focus change, on
> > > touch...) when by default the soft keyboard would be shown, I want it
> > > NOT to be shown.
>
> > > The closest things I found are
>
> > >http://groups.google.com/group/android-developers/browse_thread/threa...
>
> > > and
>
> > >http://stackoverflow.com/questions/1109022/how-to-close-hide-the-andr...
>
> > > and
>
> > >http://stackoverflow.com/questions/1109022/how-to-close-hide-the-andr...
>
> > > These however do not work for me.
>
> > > The solution suggested in the latter
>
> > > InputMethodManager imm =
> > > (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
> > > imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
>
> > > for example works only after the EditText has been selected by the
> > > user and is already accepting input and so the soft keyboard is
> > > already on the screen. I want it never to appear.
>
> > > I can try to implicitly set all of the onFocusChangeListener,
> > > onTouchListener, onClickListener  to do
>
> > > public void onSomeActionListener(View v) {
>
> > > InputMethodManager imm = (InputMethodManager)
> > > context.getSystemService(Context.INPUT_METHOD_SERVICE);
> > >                        if (imm.isActive(v)) {
> > >                                imm.toggleSoftInput(0,0);
> > >                        }
> > > }
>
> > > However, this is really not a nice solution because
>
> > > 1) the soft keyboard is first called and shown so that it briefly
> > > flashes on the screen before disappearing
>
> > > 2) I can't by trial and error try to find all the different ways user
> > > could cause soft keyboard to be shown and override all corresponding
> > > methods
>
> > > Thanks for your help!
>
> > > --
> > > You received this message because you are subscribed to the Google
> > > Groups "Android Developers" group.
> > > To post to this group, send email to android-developers@googlegroups.com
> > > To unsubscribe from this group, send email to
> > > android-developers+unsubscr...@googlegroups.com
> > > For more options, visit this group at
> > >http://groups.google.com/group/android-developers?hl=en
>
> > --
> > Dianne Hackborn
> > Android framework engineer
> > hack...@android.com
>
> > Note: please don't send private questions to me, as I don't have time to
> > provide private support, and so won't reply to such e-mails.  All such
> > questions should be posted on public forums, where I and others can see and
> > answer them.
>
>

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to