当前位置:   article > 正文

安卓 解决WebView嵌套h5页面时点击输入框无法弹出软键盘的问题_webview无法弹出输入法

webview无法弹出输入法

话不多说,直接看代码

第一步:在AndroidManifest.xml中对应的activity中加入代码

  1. // adjustResize 这个属性表示Activity的主窗口总是会被调整大小来保证软键盘的显示空间
  2. android:windowSoftInputMode="adjustResize"

第二步

在实例化WebView对象后添加代码,

  1. webView.requestFocus(View.FOCUS_DOWN);// 获取焦点 或者使用 webView.requestFocus()同样的效果
  2. webView.setEnabled(true); // 这里如果设置false, 则点击h5页面中的输入框时不能唤起软键盘

这里需要注意一下, 因为开始的时候我只写了第一句代码,结果能获取焦点但是就是不弹出输入法, 后来才发现因为我将setEnabled 设置成false了,导致时间失效:

setEnabled 作用:

设置为false,该控件永远不会活动,不管设置为什么属性,都无效;

设置为true,表明激活该控件,控件处于活动状态,处于活动状态,就能响应事件了,比如触摸、点击、按键事件等;

setEnabled就相当于总开关一样,只有总开关打开了,才能使用其他事件。

 

接下来放出我项目的代码给大家借鉴下

layout 文件:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. tools:context=".activity.me.CommonWebViewActivity">
  8. <com.lidou.base.view.TitleView
  9. android:id="@+id/titleView"
  10. android:layout_width="0dp"
  11. android:layout_height="wrap_content"
  12. android:background="@color/white"
  13. app:IvLeftSrc="@drawable/icon_back"
  14. app:IvLeftVisibility="visiable"
  15. app:IvRightSrc="@drawable/icon_setting"
  16. app:IvRightVisibility="gone"
  17. app:TitleText="帮助中心"
  18. app:layout_constraintEnd_toEndOf="parent"
  19. app:layout_constraintStart_toStartOf="parent"
  20. app:layout_constraintTop_toTopOf="parent" />
  21. <WebView
  22. android:id="@+id/commonWebView"
  23. android:layout_width="0dp"
  24. android:layout_height="0dp"
  25. app:layout_constraintBottom_toBottomOf="parent"
  26. app:layout_constraintEnd_toEndOf="parent"
  27. app:layout_constraintStart_toStartOf="parent"
  28. app:layout_constraintTop_toBottomOf="@+id/titleView" />
  29. </android.support.constraint.ConstraintLayout>

 

activity 文件: 

  1. package com.lidou.quke.activity.me;
  2. import android.content.Intent;
  3. import android.os.Build;
  4. import android.os.Bundle;
  5. import android.webkit.WebChromeClient;
  6. import android.view.View;
  7. import android.webkit.WebSettings;
  8. import android.webkit.WebView;
  9. import android.webkit.WebViewClient;
  10. import com.lidou.base.utils.StringUtils;
  11. import com.lidou.base.view.TitleView;
  12. import com.lidou.quke.R;
  13. import com.lidou.quke.activity.BusinessActivity;
  14. public class CommonWebViewActivity extends BusinessActivity {
  15. private TitleView mTitleView;
  16. private WebView mCommonWebView;
  17. @Override
  18. protected void onCreate(Bundle savedInstanceState) {
  19. super.onCreate(savedInstanceState);
  20. setContentView(R.layout.activity_common_web_view);
  21. initView();
  22. Intent intent = getIntent();
  23. String titleName = intent.getStringExtra("titleName");
  24. String urlString = intent.getStringExtra("urlString");
  25. mTitleView.setTitleText(titleName);
  26. mTitleView.setOnTitleViewClickListener(this);
  27. WebView webView = (WebView) findViewById(R.id.commonWebView);
  28. webView.requestFocus();// .requestFocus(View.FOCUS_DOWN);// 获取焦点
  29. webView.setEnabled(true); // 这里如果设置false, 则点击h5页面中的输入框时不能唤起软键盘
  30. webView.getSettings().setJavaScriptEnabled(true);
  31. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
  32. webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
  33. }
  34. webView.getSettings().setTextZoom(40);
  35. webView.getSettings().setBlockNetworkImage(false); //设置网页在加载的时候暂时不加载图片
  36. webView.setVerticalScrollBarEnabled(true);
  37. webView.setHorizontalScrollBarEnabled(false);
  38. webView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
  39. webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
  40. webView.setWebChromeClient(new WebChromeClient() {
  41. });
  42. webView.setWebViewClient(new WebViewClient());
  43. if (!StringUtils.isEmpty(urlString))
  44. webView.loadUrl(urlString);
  45. }
  46. private void initView() {
  47. mTitleView = findViewById(R.id.titleView);
  48. mCommonWebView = findViewById(R.id.commonWebView);
  49. }
  50. }

效果图:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/321537
推荐阅读
相关标签
  

闽ICP备14008679号