Android WebView не показывает строки заголовка или плавающие кнопки

#android #sharepoint #webview #webchromeclient #android-websettings

#Android #sharepoint #веб-просмотр #webchromeclient #android-websettings

Вопрос:

У меня есть 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_width="match_parent"
        android:layout_height="match_parent"
        />
</ConstraintLayout>
 

Я попытался внедрить пользовательский браузер Chromium, внедрив BaseChromeClient, но это также не дало никаких результатов.

Если есть вопросы о веб-странице, я дам ответы, как только смогу.

Комментарии:

1. Вы пытались отлаживать / находить ошибки с помощью удаленной отладки WebView или проверять, использует ли ваш сайт функции, которые Chrome Custom Tab может решить?

2. Я действительно не нашел ничего полезного, WebView Debugging но спасибо, что указали на это, это может быть полезно в будущем. Также Chrome Custom Tab , насколько я понял, нужно открывать приложения во внешнем браузере, но я хочу открыть его внутри моего WebView . Еще одна вещь, которую я могу добавить, это то, что страница размещается внутри Microsoft Sharepoint .

3. Как это выглядит, когда вы открываете ссылку в мобильном представлении в браузере? можно показать здесь 🙂

4. Возможно, например, sharepoint не отображает эти верхние строки из-за пользовательского агента по умолчанию, используемого WebView. Сначала я бы включил удаленную отладку для webview, WebView.setWebContentsDebuggingEnabled(true) а затем подключил к нему настольный Chrome, чтобы посмотреть, как выглядит HTML. Если верхние строки отсутствуют, попробуйте изменить User-Agent на что-то похожее на браузер по умолчанию webview.getSettings().setUserAgentString(...) .

Ответ №1:

Чтобы сохранить ориентацию и размер экрана webview, чтобы предотвратить разрушение содержимого веб-страницы при изменении ориентации, пожалуйста, добавьте эту строку в свой xml.

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

И заголовки веб-страниц могут быть размещены за панелью навигации Android, поэтому, пожалуйста, попробуйте скрыть панель навигации Android на странице.

И не могли бы вы также поделиться своим html / css-кодом веб-страницы?

Ответ №2:

Я думаю, у вас должен быть макет рамки для плавающей кнопки действия. Попробуйте это.

    <FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <WebView
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</FrameLayout>