3

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!

2 Answers 2

1

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

Sign up to request clarification or add additional context in comments.

3 Comments

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 :)
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.
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.
0

What about using a custom "pop-up" of sorts in where your app implements an onClick() or onTouch() listener for the input box so that when the user clicks in the input field to enter a value they see a new simple activity with the input method overridden as suggested by @Dave Webb. In theory shouldnt be too much more code or overhead.

2 Comments

@LambergaR I had the same issue and I did implement a InputMethodService (custom keyboard basically) but now the question is, how to show it when the user taps on the EditText... (with whichever means necessary) did you manage to figure that out?
@AgentKnopf you can check the hitresult() from the webview, which returns edittext type.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.