按下输入按钮时隐藏键盘 - Android WebView

时间:2018-04-29 02:09:41

标签: android

当键盘打开时,在我的index.html页面中按下我的数字类型输入字段<input name="age" id="age" type="number">时,按钮不会执行任何操作。是否可以在按下时关闭/隐藏此按钮?

我尝试了不同的答案,但我无法使其中任何一个有效。请告诉我我做错了什么。

这是我的主要活动。我正在使用AdvancedWebView作为WebView组件。

public class MainActivity extends Activity implements AdvancedWebView.Listener {

    private AdvancedWebView mWebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        OneSignal.startInit(this)
            .setNotificationOpenedHandler(new ExampleNotificationOpenedHandler())
            .init();
        setContentView(R.layout.activity_main);

        mWebView = (AdvancedWebView) findViewById(R.id.webview);
        mWebView.setListener(this, this);

        mWebView.loadUrl("file:///android_asset/index.html");

        mWebView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                WebView.HitTestResult hr = ((WebView) v).getHitTestResult();
                int type = hr.getType();

                if (type == WebView.HitTestResult.EDIT_TEXT_TYPE) {
                    InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
                    imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
                    return true;
                }
                return false;
            }
        });
    }
}

这是我的清单xml:

<application
   android:allowBackup="true"
   android:icon="@drawable/ic_launcher"
   android:label="@string/app_name"
   android:theme="@style/AppTheme">
   <activity
      android:name=".MainActivity"
      android:label="@string/app_name"
      android:launchMode="singleTask">
      <intent-filter>
         <action android:name="android.intent.action.MAIN" />
         <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
   </activity>
</application>

1 个答案:

答案 0 :(得分:-1)

在输入一些细节之后按下ENTER按钮时,此代码可能会帮助您隐藏键盘。

textInput = (EditText)findViewById(R.id.textInput);

// kill keyboard when enter is pressed
textInput.setOnKeyListener(new OnKeyListener()
{
     /**
      * This listens for the user to press the enter button on 
      * the keyboard and then hides the virtual keyboard
      */
    public boolean onKey(View arg0, int arg1, KeyEvent event) {
        // If the event is a key-down event on the "enter" button
        if ( (event.getAction() == KeyEvent.ACTION_DOWN  ) &&
             (arg1           == KeyEvent.KEYCODE_ENTER)   )
        {               
            InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(textInput.getWindowToken(), 0);   
                return true;
        }
        return false;
     }
} );

但是如果你想在编辑文本中使用单行而不是多行,那么只需在布局文件的EditText下添加android:maxLines="1"即可隐藏键盘。