问题
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.
回答1:
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.
回答2:
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.
- GreekIME at googlecode
- softkeyboard at googlecode
If you want to know more about input methods, go to Creating an input method.
回答3:
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.
回答4:
I solved it by overriding onCheckIsTextEditor method in my a-bit-custom EditText.
@Override
public boolean onCheckIsTextEditor() {
return false;
}
回答5:
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);
}
来源:https://stackoverflow.com/questions/2429595/how-to-stop-the-android-soft-keyboard-from-ever-coming-up-in-my-entire-applicati