tags:

views:

345

answers:

1

Hi!

I would like to show a custom input field (specifically, one containing only 9-0 and two extra buttons containing decimal separator (, or .) and a delete button).

I could create a custom IME, but (as far as I know) that would have to be set by the user as the system-wide input method. Is there a way to implement an input method and bind it to a specific input field?

Thanks for the help!

+1  A: 

I think you're right in that you can't have a Custom IME that you only use for specific fields in your application. It would have be switched on globally by the user.

Whatever you do make sure you have an appropriate InputFilter to go with whatever custom input method you have to restrict input from a hardware keyboard.

As you've set android:inputType for the field this will add an appropriate InputFilter automatically and it will also tell whatever IME is selected to display appropriate input buttons. For the default Android IME all this does is display the numeric page rather than the alphabetic page first:

alt text

Dave Webb
I have accomplished the same by setting the android:inputType="numberDecimal" option in the .xml file. The problem is that you get to see two rows of letters and only one row of tiny numbers - and that can quite screw the user experience. So, I would really like the user to see ONLY the numbers, the separator and some sort of delete button, same as on all the calculators from the 80's :)
LambergaR
I see your point. In which case why not just add some Buttons in a GridLayout and disable the default on-screen keyboard. That would look even more like a old-school calculator.
Dave Webb
That is essentially what I have done (I am sowing an overlay with the buttons). But, since there is more than just one input box on the page it would be nice to get rid of that step and 'simply' show a different king of SiftInput when user sets the focus on the field.
LambergaR