Mark Worsnop
Mark Worsnop

Reputation: 4467

How to show the numeric keypad

I read several other posts and using input.setInputType(TYPE_NUMBER_FLAG_DECIMAL); does open the keyboard but its not the numeric keyboard

Is there a trick to this?

Upvotes: 24

Views: 41281

Answers (6)

Mieczkoni
Mieczkoni

Reputation: 544

Here's how to do it totally programmatically. As you need to show the numeric keyboard, you should technically set the inputType as a number inside the XML layout. But since you don't have the XML layout, you need to setup the corresponding flags programmatically. Here's what the documentation says about the number flag:

<!-- A numeric only field.  Corresponds to
{@link android.text.InputType#TYPE_CLASS_NUMBER} |
{@link android.text.InputType#TYPE_NUMBER_VARIATION_NORMAL}. -->
<flag name="number" value="0x00000002" />

so in order to have the same behaviour you need to do what's below:

mEditText.setInputType( InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_NORMAL );

Upvotes: 0

Othman Shawgan
Othman Shawgan

Reputation: 122

I found two easy ways to do it, add one of them to EditText block in XML file:

  1. Numeric dial keyboard pad
        android:inputType="phone"
        android:digits="1234567890"
  1. Numeric section of keyboard
        android:inputType="number"

Upvotes: 0

Rana Ranvijay Singh
Rana Ranvijay Singh

Reputation: 6165

To pop up a numeric keyboard on start of the activity i used following steps:

Created edit text field in layout as:

 <EditText
        ...
        android:inputType="number"    
        ...  />

In function onCreate() show soft keyboard

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);

Most important is to give focus to edit text in onResume method.

    @Override
    public void onResume() {
        super.onResume();
        editText.setFocusableInTouchMode(true);
        editText.requestFocus();
    }

Upvotes: 3

lordhong
lordhong

Reputation: 1227

In your xml, you have to do this:

android:inputType="Number"

In your code, do:

editText.requestFocus();

Then:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);

Took me many days to figure this out. I even tried editText.performClick(); Not working.

Upvotes: 9

Anju
Anju

Reputation: 9479

give android:inputType="number" inside your xml file

Edit: "Number" does not work, changed to "number" (lowercase N)

Upvotes: 26

Rod
Rod

Reputation: 141

a) in xml

android:numeric="decimal"

b) in code

EditText editView = new EditText(this);
editView.setKeyListener(new DigitsKeyListener());

Upvotes: 14

Related Questions