Disable keyboard on EditText
Here is a website that will give you what you need
As a summary, it provides links to InputMethodManager
and View
from Android Developers. It will reference to the getWindowToken
inside of View
and hideSoftInputFromWindow()
for InputMethodManager
A better answer is given in the link, hope this helps.
here is an example to consume the onTouch event:
editText_input_field.setOnTouchListener(otl);
private OnTouchListener otl = new OnTouchListener() {
public boolean onTouch (View v, MotionEvent event) {
return true; // the listener has consumed the event
}
};
Here is another example from the same website. This claims to work but seems like a bad idea since your EditBox is NULL it will be no longer an editor:
MyEditor.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
int inType = MyEditor.getInputType(); // backup the input type
MyEditor.setInputType(InputType.TYPE_NULL); // disable soft input
MyEditor.onTouchEvent(event); // call native handler
MyEditor.setInputType(inType); // restore input type
return true; // consume touch even
}
});
Hope this points you in the right direction
How to disable keypad popup when on edittext?
The best solution lies in the Project Manifest file (AndroidManifest.xml), add the following attribute in the activity
construct
android:windowSoftInputMode="stateHidden"
Example:
<activity android:name=".MainActivity"
android:windowSoftInputMode="stateHidden" />
Description:
- The state of the soft keyboard — whether it is hidden or visible — when the activity becomes the focus of user attention.
- The adjustment made to the activity's main window — whether it is resized smaller to make room for the soft keyboard or whether its contents pan to make the current focus visible when part of the window is covered by the soft keyboard.
Introduced in:
- API Level 3.
Link to the Docs
Note:
Values set here (other than "stateUnspecified" and "adjustUnspecified") override values set in the theme.
Disable soft-keyboard from EditText but still allow copy/paste?
After hours and hours of research, I finally found a solution that works for all API versions. Hope this saves someone's time.
If you are developing for API >= 11, the solution is simple, either:
1) Add the two properties below in the xml file of EditText
android:inputType="none"
android:textIsSelectable="true"
or
2) Programatically do the below
myEditText.setInputType(InputType.TYPE_NULL);
myEditText.setTextIsSelectable(true);
And you're done.
If you want to cater for API < 11 as well, I found that there is no way to disable to keyboard from popping out if you wanted to select the text for copy paste purpose. Setting focusable to false will disable the keyboard but it doesn't help because it disables your ability to select text too. Any other solutions I found in stackoverflow all either doesn't work or disables text selection at the same time too.
One ugly way to solve this is as such..
First, add this property in the xml file of EditText
android:editable="false"
Yes this is deprecated, but necessary for making the EditText not editable in API version < 11.
Next, we will need to hide the keyboard as soon as it shows up, so that we can continue selecting text without the keyboard blocking the way.
Use this code below to detect keyboard showing up (solution obtained from https://stackoverflow.com/a/9108219/1241783), and hide it immediately.
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB)
{
final View activityRootView = findViewById(R.id.activityRoot);
activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Rect r = new Rect();
//r will be populated with the coordinates of your view that area still visible.
activityRootView.getWindowVisibleDisplayFrame(r);
int heightDiff = activityRootView.getRootView().getHeight() - (r.bottom - r.top);
if (heightDiff > 100) { // if more than 100 pixels, its probably a keyboard...
//Hide the keyboard instantly!
if (getCurrentFocus() != null)
{
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
}
}
}
});
}
It works for my case. Though you can see the keyboard showing up in a split second (which is the ugly part) but I can't think of any other way to get this to work at the time of writing. If you have a better solution, please leave a comment!
Let me know too if this saves someone's time :)
How to disable the soft keyboard to show up when the user clicks on EditText?
I found a solution that works fine and is pretty easy:
Just use mEditTextQuestion1.setEnabled(false);
in the inCreateView method to make the EditText not clickable. In my case then the color of the EditText changed to a brighter dark so I added android:textColor="#000"
to my xml file.
How to disable virtual keyboard on EditText?
The best solution lies in the Project Manifest file (AndroidManifest.xml), add the following attribute in the activity construct
<activity android:name=".MainActivity"
android:windowSoftInputMode="stateHidden" />
Related Topics
Android Listview Not Refreshing After Notifydatasetchanged
How to Execute Async Task Repeatedly After Fixed Time Intervals
How Does One Use Glide to Download an Image into a Bitmap
How to Capture the Android Device Screen Content
How to Open a Second Activity on Click of Button in Android App
Scroll Recyclerview to Show Selected Item on Top
Usage of Forcelayout(), Requestlayout() and Invalidate()
How to Change Default Dialog Button Text Color in Android 5
Mapview in a Fragment (Honeycomb)
Find Distance Between Two Points on Map Using Google Map API V2
Android: Keeping a Background Service Alive (Preventing Process Death)
Actionbar Not Shown with Appcompat
Googleservice Failed to Initialize