Android WebView 不显示标题栏或浮动按钮

Posted

技术标签:

【中文标题】Android WebView 不显示标题栏或浮动按钮【英文标题】:Android WebView not showing header bars or floating buttons 【发布时间】:2021-03-14 11:48:06 【问题描述】:

我有一个 android WebView 我想在其中显示一个页面,但页面的某些元素没有显示。

因为它是一个与工作相关的页面,您需要一个帐户才能访问它,但它托管在Microsoft Sharepoint

在图片 1(左)上是我的 WebView,它没有显示在图片 2(右)上可以看到的 2 个标题栏,并且在中间有一个浮动按钮,它覆盖视图,它Android的WebView中也没有显示。 Picutre 2 是普通网络浏览器中的页面,但在移动视图中。我也试过通过手机浏览器正常打开页面,效果也很好。

这是一个简单的WebView,它会产生同样的错误:

public class MainActivity extends AppCompatActivity 

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        WebView myWebView = (WebView) findViewById(R.id.webview);
        myWebView.setWebViewClient(new MyWebViewClient());

        WebSettings webSettings = myWebView.getSettings();
        webSettings.setjavascriptEnabled(true);
        webSettings.setLoadWithOverviewMode(true);
        webSettings.setUseWideViewPort(true);
        webSettings.setDomStorageEnabled(true);

        myWebView.loadUrl("https://secret.webpage.com");
    

    private class MyWebViewClient extends WebViewClient 
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) 
            return false;
        
    


<ConstraintLayout>
    <WebView
        android:id="@+id/webview"
        android:layout_
        android:layout_
        />
</ConstraintLayout>

我已经尝试通过实现 BaseChromeClient 来实现自定义 Chromium 浏览器,但这也没有产生任何结果。

如果有关于网页的问题,我会尽快提供答案。

【问题讨论】:

您是否尝试过使用Remote WebView Debugging 调试/查找错误或检查您的站点是否使用了Chrome Custom Tab 可能能够解决的功能? 我并没有真正发现 WebView Debugging 有什么帮助,但感谢您指出这一点,它可能在未来有用。据我所知,Chrome Custom Tab 是在外部浏览器中打开应用程序,但我想在我的WebView 中打开它。我可以添加的另一件事是该页面托管在Microsoft Sharepoint 在浏览器的移动视图上打开链接时的外观如何?可以在这里显示:) 可能是这样,例如由于 WebView 使用了默认的 User-Agent,sharepoint 不会呈现这些顶部栏。我首先使用WebView.setWebContentsDebuggingEnabled(true) 为webview 启用远程调试,然后将桌面Chrome 连接到它以查看html 的样子。如果顶部栏不存在,则尝试将 User-Agent 更改为类似于默认浏览器的 webview.getSettings().setUserAgentString(...) 【参考方案1】:

要保持 webview 的方向和屏幕大小以防止因方向更改而破坏网页内容,请将此行添加到您的 xml。

<WebView
   ...
   android:configChanges="orientation|screenSize"
/>

而且网页header可以放在android导航栏后面,所以请尽量隐藏页面的android导航栏。

您能否也分享您的网页 html / css 代码?

【讨论】:

【参考方案2】:

我认为您应该为浮动操作按钮设置框架布局。试试这个。

   <FrameLayout
    android:layout_
    android:layout_>

    <WebView
        android:layout_
        android:layout_ />

    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:layout_
        android:layout_ />
</FrameLayout>

【讨论】:

以上是关于Android WebView 不显示标题栏或浮动按钮的主要内容,如果未能解决你的问题,请参考以下文章

Android Compose 新闻App导航动画WebView浮动按钮底部导航

Android Compose 新闻App导航动画WebView浮动按钮底部导航

Android浮动按钮和高级webview不起作用

Android 浮动视图(在其他视图之上)

android webview:防止文本选择actionMode actionBar

在失焦时隐藏文本选择句柄:Android -Webview