JohnnyLambada
JohnnyLambada

Reputation: 12826

How to stop the android soft keyboard from ever coming up in my entire application

I'm developing an application on a hardware device that has a built-in hardware keyboard that does not slide out so is always visible (like a blackberry). Therefore, I NEVER want the soft keyboard to display for my entire application. I'm aware of another SO question that gives the following lines of code:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);

But I don't know where to put this code to hide the soft keyboard in all places where it might possibly appear in my Activity. I have tried adding the code to Activity.onUserInteraction to no avail. It seems the keyboard appears after the onUserInteraction executes.

I also tried adding the following to my <Activity>:

<activity 
    android:windowSoftInputMode="stateAlwaysHidden"
>

Soft keyboard still appears.

Upvotes: 3

Views: 5640

Answers (5)

ASP
ASP

Reputation: 3705

Where ever you have Edit text, put this code..

edittext.setInputType(InputType.TYPE_NULL);      
if (android.os.Build.VERSION.SDK_INT >= 11)   
{  
    edittext.setRawInputType(InputType.TYPE_CLASS_TEXT);  
    edittext.setTextIsSelectable(true);  
}

Upvotes: 0

rshmelev
rshmelev

Reputation: 598

I solved it by overriding onCheckIsTextEditor method in my a-bit-custom EditText.

@Override
public boolean onCheckIsTextEditor() {
    return false;
}

Upvotes: 2

dnaq
dnaq

Reputation: 2244

If an EditText has an inputType of 0, the soft keyboard will never pop up when that EditText is selected.

EditText editText = findViewById(R.id.edit_text);
editText.setInputType(0);

This will of course need to be done for all the EditTexts in your application, or you could always subclass EditText and set the input type to 0 in your constructor.

Setting the xml inputType parameter will not do, since that corresponds to a call to the setRawInputType method, which does not remove the KeyListener.

Upvotes: 2

Macarse
Macarse

Reputation: 93173

An easy workaround for tomorrow presentation:

I would create a new IME with an empty view. Here are two openSource projects for you to look at some code.

If you want to know more about input methods, go to Creating an input method.

Upvotes: 2

CommonsWare
CommonsWare

Reputation: 1007544

Your application should not do anything. The device's firmware should contain a configuration that inhibits the soft keyboard based on the hardware keyboard being visible, just like every other Android device that has a hardware keyboard. If that is not happening, talk to the hardware maker and see if they are planning on addressing this.

Upvotes: 5

Related Questions