我使用 WebView 作为 Activity 的背景。但软键不能正常工作

Posted

技术标签:

【中文标题】我使用 WebView 作为 Activity 的背景。但软键不能正常工作【英文标题】:I using WebView for background of Activity. but soft key is not work correctly 【发布时间】:2018-01-15 13:33:48 【问题描述】:

我想在 Activity 的背景中使用动画文件,SVG 类型。

(我使用此活动登录页面)

所以,我在服务器上上传了一个由 CSS 和 JS 文件制作的网页。

然后我做了一个Activity的布局。

布局结构与next相同。

FrameLayout(最高父级的Layout) - WebView(width, height = match_parent) - RelativeLayout(他有Image for Logo) - LinearLayout(他有很多Views, textview 和EditText)。

结果,动画页面加载良好,但软键无法正常工作。

在 EditText 上输入 Id 和 Pw,退格键不能正常工作。

EditText(密码类型)退格键完全不起作用。 (输入类型为密码)

具体来说,在模拟器的环境上,效果很好。

但是在真实设备的环境中,这是导致问题的原因。

我不知道为什么会这样。

下面是我的代码。感谢阅读。

是webView布局代码

<!--Layout xml File, part webView-->
<WebView
    android:id="@+id/loginBackground"
    android:layout_
    android:layout_     
    >

下面是editText的布局(id, pw)

 <android.support.v7.widget.AppCompatEditText
                                android:id="@+id/inputPW"
                                android:layout_
                                android:layout_
                                android:inputType="textPassword"
                                android:textColor="#FFFFFF"
                                android:textSize="25sp" />


    <android.support.v7.widget.AppCompatEditText
                                android:id="@+id/inputId"
                                android:layout_
                                android:layout_
                                android:inputType="textEmailAddress"
                                android:textColor="@color/colorWhite"

                                android:textSize="25sp"
                                android:textStyle="bold" />
                        </LinearLayout>

它是 webviews 的 java 代码

loginBackground = (WebView) findViewById(R.id.loginBackground);
    loginBackground.setWebViewClient(new WebViewClient());
    WebSettings webSettings = loginBackground.getSettings();
    webSettings.setjavascriptEnabled(true);



    loginBackground.loadUrl("~~~~~URL PATH~~~~");

【问题讨论】:

【参考方案1】:

EditText替换成android.support.v7.widget.AppCompatEditText。你的问题就解决了。

【讨论】:

【参考方案2】:

我自己解决了。此问题是由将另一个 Layout 包装到 WebView 引起的。 以下是我的解决方案。

    制作两个活动。一个 Activity 被填满 WebView,然后将另一个 Activity 的背景设置为透明。

(我称WebView活动为A,另一个活动为B)

    调用 A,然后在 Activity A 中调用 B。

    因此,您将在一个屏幕上看到两个活动,但您可以单独使用。

    如果您想同时完成两个活动,您可以覆盖“OnBackPressed”方法。您必须在活动堆栈上删除活动 A 的对象。您可以删除它以使用静态变量或标志。

感谢您的阅读,希望对您的项目有所帮助。

【讨论】:

以上是关于我使用 WebView 作为 Activity 的背景。但软键不能正常工作的主要内容,如果未能解决你的问题,请参考以下文章

WebView 中的视频 - ApplicationContext vs Activity Context

如何在一个 Activity 中显示 listview 和 webview?

史上最全WebView使用,附送Html5Activity一份

史上最全WebView使用,附送Html5Activity一份

Activity中Webview的Html按钮点击检测(java代码)

Android:WebView 中的 Twitter - 通过回调返回 Activity