安卓 解决WebView嵌套h5页面时点击输入框无法弹出软键盘的问题
话不多说,直接看代码第一步:在AndroidManifest.xml中对应的activity中加入代码// adjustResize 这个属性表示Activity的主窗口总是会被调整大小来保证软键盘的显示空间android:windowSoftInputMode="adjustResize"第二步:在实例化WebView对象后添加代码,webView.requestFo...
·
话不多说,直接看代码
第一步:在AndroidManifest.xml中对应的activity中加入代码
// adjustResize 这个属性表示Activity的主窗口总是会被调整大小来保证软键盘的显示空间
android:windowSoftInputMode="adjustResize"
第二步:
在实例化WebView对象后添加代码,
webView.requestFocus(View.FOCUS_DOWN);// 获取焦点 或者使用 webView.requestFocus()同样的效果
webView.setEnabled(true); // 这里如果设置false, 则点击h5页面中的输入框时不能唤起软键盘
这里需要注意一下, 因为开始的时候我只写了第一句代码,结果能获取焦点但是就是不弹出输入法, 后来才发现因为我将setEnabled 设置成false了,导致时间失效:
setEnabled 作用:
设置为false,该控件永远不会活动,不管设置为什么属性,都无效;
设置为true,表明激活该控件,控件处于活动状态,处于活动状态,就能响应事件了,比如触摸、点击、按键事件等;
setEnabled就相当于总开关一样,只有总开关打开了,才能使用其他事件。
接下来放出我项目的代码给大家借鉴下
layout 文件:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity.me.CommonWebViewActivity">
<com.lidou.base.view.TitleView
android:id="@+id/titleView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@color/white"
app:IvLeftSrc="@drawable/icon_back"
app:IvLeftVisibility="visiable"
app:IvRightSrc="@drawable/icon_setting"
app:IvRightVisibility="gone"
app:TitleText="帮助中心"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<WebView
android:id="@+id/commonWebView"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/titleView" />
</android.support.constraint.ConstraintLayout>
activity 文件:
package com.lidou.quke.activity.me;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.webkit.WebChromeClient;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import com.lidou.base.utils.StringUtils;
import com.lidou.base.view.TitleView;
import com.lidou.quke.R;
import com.lidou.quke.activity.BusinessActivity;
public class CommonWebViewActivity extends BusinessActivity {
private TitleView mTitleView;
private WebView mCommonWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_common_web_view);
initView();
Intent intent = getIntent();
String titleName = intent.getStringExtra("titleName");
String urlString = intent.getStringExtra("urlString");
mTitleView.setTitleText(titleName);
mTitleView.setOnTitleViewClickListener(this);
WebView webView = (WebView) findViewById(R.id.commonWebView);
webView.requestFocus();// .requestFocus(View.FOCUS_DOWN);// 获取焦点
webView.setEnabled(true); // 这里如果设置false, 则点击h5页面中的输入框时不能唤起软键盘
webView.getSettings().setJavaScriptEnabled(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
webView.getSettings().setTextZoom(40);
webView.getSettings().setBlockNetworkImage(false); //设置网页在加载的时候暂时不加载图片
webView.setVerticalScrollBarEnabled(true);
webView.setHorizontalScrollBarEnabled(false);
webView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView.setWebChromeClient(new WebChromeClient() {
});
webView.setWebViewClient(new WebViewClient());
if (!StringUtils.isEmpty(urlString))
webView.loadUrl(urlString);
}
private void initView() {
mTitleView = findViewById(R.id.titleView);
mCommonWebView = findViewById(R.id.commonWebView);
}
}
效果图:
更多推荐
已为社区贡献3条内容
所有评论(0)