用户完成在Goodie Bag PinviewEditText中的编辑后,如何自动关闭键盘?

时间:2019-02-02 06:55:58

标签: android

即使开始新活动后键盘也不会关闭。

我要当用户完成编辑后,无需按完成/输入键即可开始新的活动。

pinview.setPinViewEventListener(new Pinview.PinViewEventListener() {
        @Override
        public void onDataEntered(Pinview pinview, boolean fromUser) {
            String pin=pinview.getValue();
            callApi(pin);

        }
    });

而xml是

   <com.goodiebag.pinview.Pinview
            android:id="@+id/pinview"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:pinWidth="30dp"
            app:pinHeight="30dp"
            app:pinLength="6"
            android:layout_gravity="center_horizontal"
            app:cursorVisible="false"
            app:forceKeyboard="true"
            app:hint=""
            app:inputType="number"
            android:layout_marginTop="10dp"
            app:password="false"/>

3 个答案:

答案 0 :(得分:1)

您可以按以下代码进行设置,

科特林

val inputMethodManager = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
inputMethodManager.hideSoftInputFromWindow(currentFocus!!.windowToken, 0)

的Android java的

InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
        inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);

或在AndroidManifest.xml中:

<activity android:name="com.your.package.ActivityName"
          android:windowSoftInputMode="stateHidden"  />

答案 1 :(得分:1)

您可以尝试这些。...

在清单文件中,在使用PinView的活动中添加这两行。

<activity android:name=".MainActivity"
    android:configChanges="keyboardHidden"
    android:label="@string/hello_activity"
    android:theme="@style/AppTheme.NoActionBar"
    android:windowSoftInputMode="adjustPan|stateHidden" />

然后在您要调用callApi方法的代码中添加以下行。

pinview.setPinViewEventListener(new Pinview.PinViewEventListener() {
    @Override
    public void onDataEntered(Pinview pinview, boolean fromUser) {
        String pin = pinview.getValue();

        // Add this following code.. it works
        if (pin.length() == 6) {
            InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
            inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
        }
    }
});

答案 2 :(得分:0)

尝试一下

otpPinView.onKey(otpPinView.getFocusedChild(), KeyEvent.KEYCODE_DEL, new KeyEvent(KeyEvent.ACTION_UP,KeyEvent.KEYCODE_DEL));

,您也可以使用它:

InputMethodManager inputManager = 
    (InputMethodManager) context.
        getSystemService(Context.INPUT_METHOD_SERVICE); 
inputManager.hideSoftInputFromWindow(
    this.getCurrentFocus().getWindowToken(),
    InputMethodManager.HIDE_NOT_ALWAYS);