Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>I was able to implement onKeyPreIme by sub-classing my EditText views that were related to the keyboard input. The goal is to make a custom lock screen that the user must enter a pass code or leave the application. When the user taps the "keyboard down" button the keyboard does not disappear. </p> <p>Make sure to create a separate .java file for the subclassed EditText. Additionally, be sure to use the constructor in the code below (must pass AttrubuteSet).</p> <p>I realize that my implementation of onKeyPreIme may not match yours, however it does demonstrate how to intercept the keyboard events before the InputMethodManager does it's thing. </p> <p>I hope this helps. </p> <p>Screenshot UserLockActivity <img src="https://i.stack.imgur.com/9NMbs.png" alt="enter image description here"></p> <p>EditText Subclass</p> <pre><code>public class LockEditText extends EditText { /* Must use this constructor in order for the layout files to instantiate the class properly */ public LockEditText(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } @Override public boolean onKeyPreIme (int keyCode, KeyEvent event) { // Return true if I handle the event: // In my case i want the keyboard to not be dismissible so i simply return true // Other people might want to handle the event differently System.out.println("onKeyPreIme " +event); return true; } } </code></pre> <p>UserLockActivity.java</p> <pre><code>public class UserLockActivity extends Activity { private LockEditText editText1; private LockEditText editText2; private LockEditText editText3; private LockEditText editText4; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_user_lock); editText1 = (LockEditText) findViewById(R.id.lock_text_1); editText2 = (LockEditText) findViewById(R.id.lock_text_2); editText3 = (LockEditText) findViewById(R.id.lock_text_3); editText4 = (LockEditText) findViewById(R.id.lock_text_4); setupTextChangedListener(editText1); setupTextChangedListener(editText2); setupTextChangedListener(editText3); setupTextChangedListener(editText4); // A method to bring out the keyboard when the view appears setFocusOnEditText(editText1); } public void setFocusOnEditText(LockEditText editText) { editText.clearFocus(); editText.requestFocus(); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0); } public void setupTextChangedListener(LockEditText editText) { editText.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable arg0) { // TODO Auto-generated method stub } @Override public void beforeTextChanged(CharSequence arg0, int arg1,int arg2, int arg3) { // TODO Auto-generated method stub } }); } } </code></pre> <p>activity_user_lock.xml Layout file</p> <pre><code>&lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".UserLockActivity" &gt; &lt;TextView android:id="@+id/main_lock_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_alignParentTop="true" android:paddingTop="60dp" android:paddingBottom="20dp" android:text="@string/enter_passcode" android:textAppearance="?android:attr/textAppearanceLarge" /&gt; &lt;LinearLayout android:id="@+id/lock_input_layout" android:layout_width="match_parent" android:layout_height="60dp" android:layout_below="@+id/main_lock_text" android:orientation="horizontal" &gt; &lt;com.yourpackage.yourappname.LockEditText android:id="@+id/lock_text_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_weight="1" android:ems="10" android:inputType="numberPassword" android:textSize="30sp" android:gravity="center_horizontal" android:textStyle="bold" &gt; &lt;/com.yourpackage.yourappname.LockEditText&gt; &lt;com.yourpackage.yourappname.LockEditText android:id="@+id/lock_text_2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_weight="1" android:ems="10" android:inputType="numberPassword" android:textSize="30sp" android:gravity="center_horizontal" android:textStyle="bold" &gt; &lt;/com.yourpackage.yourappname.LockEditText&gt; &lt;com.yourpackage.yourappname.LockEditText android:id="@+id/lock_text_3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_weight="1" android:ems="10" android:inputType="numberPassword" android:textSize="30sp" android:gravity="center_horizontal" android:textStyle="bold"&gt; &lt;/com.yourpackage.yourappname.LockEditText&gt; &lt;com.yourpackage.yourappname.LockEditText android:id="@+id/lock_text_4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_weight="1" android:ems="10" android:inputType="numberPassword" android:textSize="30sp" android:gravity="center_horizontal" android:textStyle="bold" &gt; &lt;/com.yourpackage.yourappname.LockEditText&gt; &lt;/LinearLayout&gt; &lt;TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/lock_input_layout" android:layout_centerHorizontal="true" android:text="text" /&gt; &lt;/RelativeLayout&gt; </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload