Как показать WebView с типом Theme.Dialog в Android

Я объявил активность WebView в манифесте следующим образом:

<activity android:name=".MyWebView" android:label="@string/app_name" android:configChanges="orientation|keyboardHidden" android:theme="@android:style/Theme.Dialog"> </activity> 

WebView выглядит так:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <WebView android:id="@+id/webview" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout> 

Когда я запускаю это действие в своем основном действии, только заголовок диалога, содержащий имя приложения, отображается, но не WebView. Если я добавлю TextView в LinearLayout, он также будет показан, но WebView отсутствует. Если я не применяю android:theme="@android:style/Theme.Dialog" в манифесте, отображается WebView.

Почему это и как я могу показать WebView в диалоговом окне?

Solutions Collecting From Web of "Как показать WebView с типом Theme.Dialog в Android"

Я обнаружил, что он работает, если вы изменили webview на wrap_content, а не на fill_parent. Не знаю, почему. Вероятно, это ошибка.

Лучший способ, который я нашел, – это небольшой трюк:

Обратите внимание на 1000dp для minWidth и minHeight

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:minWidth="1000dp" android:minHeight="1000dp" > <WebView android:id="@+id/web_view" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout> 

Другой способ заключается в том, чтобы обернуть контент в WebView, но он не будет расширяться до тех пор, пока вы не загрузите веб-страницу, и он начнет работать с небольшим, а затем развернется. Этот хакерский способ сделает большой диалог в начале.

Я бы подумал, что вы будете работать. Возможно, попробуйте переопределить класс диалога вместо класса активности.

Используйте WebView в качестве корневого макета – без какого-либо окружающего элемента. Не знаю, почему это не сработало с окружающим макетом.