[android-developers] Re: Completely disable Soft Keyboard from EditText

2011-02-12 Thread zenperttu
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  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  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  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
>
&g

[android-developers] Re: Completely disable Soft Keyboard from EditText

2011-02-05 Thread zenperttu
Hi! Thanks for your answer. Unfortunately setting editable="false"
does not do the trick. When I'm moving the focus via hard keys from a
normal EditText to the View where I'd like not to have soft keyboard
shown it still stays on the screen.

ps. Sorry I didn't answer earlier, I couldn't find my post for some
reason and actually reposted it, so I missed your answer.

On Feb 4, 4:12 am, Brill Pappin  wrote:
> There doesn't seem to be an ime option in EditorInfo to disable the
> soft keyboard.
>
> Can you make the view editable==false but still capture touch/select
> events?
> Making it non-editable may prevent the keyboard from popping up.
>
> - Brill Pappin
>
> On Feb 1, 1:29 pm, zenperttu  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 
> > arehttp://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


[android-developers] Making the soft keyboard NOT to be shown for a View

2011-02-04 Thread zenperttu
I have three EditText boxes in an activity, for two of which normal
input methods (hard keys, default soft keyboard) are ok. But for one
of the EditText boxes I want to send soft input only from a custom
keyboard view. So in effect I wanted the default soft keyboard never
to be shown for this EditText. I tried adding onTouchListeners and
onFocusChange listeners for the EditText with partial success like
this:

public boolean onTouch(View v, MotionEvent event) {
v.requestFocus();
imm.toggleSoftInput(0, 0);
return true;
}

public void onFocusChange(View v, boolean hasFocus) {
InputMethodManager imm =
(InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm.isActive(v)) {
imm.toggleSoftInput(0,0);
}
}


I did not achieve a definitive solution because

1)the default soft keyboard always briefly flashes visible before the
listener hides it

2)on some occasions, such as moving focus to the EditText with hard
keyboard arrow keys sometimes sets the default soft keyboard visible

and so on.

So I would love to find a simple way to tell Android never to show the
default soft keyboard for this specific EditText. I would not like to
extend EditText and start to override stuff, since the EditText
functionality is perfect for me - I just want the default soft
keyboard not to be shown.

I've spent days now trying to figure this out. Some topics (including
some here) found via googling have half-way attempts at this problem,
but so far I haven't found a single totally functional solution.

I decided I could also try not to use EditText but whatever other View
that will get the job done. It turns out it is very hard to get rid of
that soft keyboard. It even shows up when I use the hard keys to move
focus from an EditText to a Button! Why on earth should the soft
keyboard be shown on every View that happens to have focus? Even when
I explicitly say inputType="none"? How do I turn that %¤#"! soft
keyboard OFF? Below is the xml for the Button - let's use that as an
example:




It would make my day if one of you guys could help me out here!

-- 
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


[android-developers] Completely disable Soft Keyboard from EditText

2011-02-03 Thread zenperttu
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/thread/2565bc51c5ff4dbb

and

http://stackoverflow.com/questions/1109022/how-to-close-hide-the-android-soft-keyboard

and

http://stackoverflow.com/questions/1109022/how-to-close-hide-the-android-soft-keyboard

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