Как показать WebView со стилем Theme.Dialog в Android - PullRequest
8 голосов
/ 29 августа 2010

Я объявил активность 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 в диалоговом окне?

Ответы [ 4 ]

23 голосов
/ 09 сентября 2010

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

3 голосов
/ 26 мая 2012

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

Обратите внимание на 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, но оно не будет расширяться до тех пор, пока вы не загрузите веб-страницу ... поэтому оно начнется с малого, а затем развернется. Этот хакерский способ сделает большой диалог при запуске.

0 голосов
/ 10 августа 2011

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

0 голосов
/ 29 августа 2010

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

...